Welcome to WebmasterWorld Guest from 54.163.84.199

Forum Moderators: open

Can't get YouTube embed to work in IE locally

Youtube player locally IE

   
5:40 pm on Jul 10, 2012 (gmt 0)



It's a JavaScript enabled chromless player. Works fine online. Locally, ok with Firefox but I can't get it to work on IE.

Any ideas?

Thanks!
5:59 pm on Jul 10, 2012 (gmt 0)

WebmasterWorld Senior Member fotiman is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month



Possibly a security setting? Hard to tell without example code to determine if it's a code problem or not. Look at Tools > Internet Options > Security, and check the settings of the different zones. You might also look at the Advanced tab and look through the security settings.
6:11 pm on Jul 10, 2012 (gmt 0)



Hi Fontiman. I've tried many of the checkboxes there.

IE asks if it's ok to run the javascript and it does when i say yes, except for loading or starting the player - just standard code that works everywhere else, including IE when online.

I did once get the following message, but no longer see it :


function EMBQ(a){var b=EMB5b;b.source&&(a.id=b.e,a=JSON.stringify(a),b.source.postMessage(a,b.origin))};

IE highlights b.source.pstMessage(a,b.origin) as the error (invalid argument)
6:39 pm on Jul 10, 2012 (gmt 0)

WebmasterWorld Senior Member fotiman is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month



Well, bramnley, like I said, it will be difficult for anyone to offer useful advice without a code sample.
9:42 pm on Jul 10, 2012 (gmt 0)



Here's the simplified test case. Works in all browsers online. Works in FF offline / locally. But not in any IE.

<html>
<body>
<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>

<script>
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);


// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '480',
width: '853',
videoId: 'u1zgFlCw8Aw',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}

// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
alert("player ready");
event.target.playVideo();
}

// 5. The API calls this function when the player's state changes.
// The function indicates that when playing a video (state=1),
// the player should play for six seconds and then stop.
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}
</script>
</body>
</html>
10:44 pm on Jul 10, 2012 (gmt 0)

WebmasterWorld Senior Member fotiman is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month



I saved that to a file on my desktop, then right clicked the file and chose Open with > Internet Explorer. In Internet Explorer, I saw a message bar along the top (inside the tab) that read "To help protect your security, Internet Explorer has restricted this webpage from running scripts or ActiveX controls that could access your computer. Click here for options...". I clicked it, and selected "Allow blocked content". Another dialog popped up asking if I was sure, and I clicked "Yes". The video then appeared.
Note, the bottom right of my browser says Protected Mode: Off.
10:44 pm on Jul 10, 2012 (gmt 0)

WebmasterWorld Senior Member fotiman is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month



To summarize, though, it's got to be one of your security settings, vs. a code problem.
12:46 am on Jul 11, 2012 (gmt 0)



Hi Fontiman.

Yes the video appears and one can press the red play button.

But notice that the events are never fired. I added an alert. They do in FireFox. But I see this as a bug in YT code. Without the events I cant control the player with my own Javascript controls, which is the point.
12:50 am on Jul 11, 2012 (gmt 0)



I get the following error repeatedly :

SCRIPT87: Invalid argument.
www-embed_core_module-vflRHPI6i.js, line 35 character 70

Which is

function EMBQ(a){var b=EMB5b;b.source&&(a.id=b.e,a=JSON.stringify(a),b.source.postMessage(a,b.origin))};

IE highlights b.source.postMessage(a,b.origin) as the error (invalid argument)
2:13 pm on Jul 11, 2012 (gmt 0)

WebmasterWorld Senior Member fotiman is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month



1. It's "Fotiman", not "Fontiman". :)
2. I believe this is some sort of IE security restriction, though I'm not sure how to get around it.

The simple solution would be to not run this directly from the file system on your machine, and instead run it in a local webserver. That is, instead of pointing your browser at "C:\path\to\file.htm", you would put in "http://localhost/file.htm"
4:37 pm on Jul 11, 2012 (gmt 0)



I don't seem to have a localhost set up.

It works in Chrome also btw; only IE has the issue. I'm pretty sure it is a bug in the YT code though.
5:51 pm on Jul 11, 2012 (gmt 0)

WebmasterWorld Senior Member fotiman is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month



No, as I've said, I don't think this is a bug, this is just IE's security settings preventing local execution. My advice would be to get a local web server running on your development machine. If you're on Windows (obviously, since you are seeing this with IE), you could install IIS or a WAMP install. You could even use node.js (http://nodejs.org) to create a local webserver. Shouldn't take more than 15 minutes to get something up and running.

Opening a web page directly from the file system will always be a hit or miss, and just isn't a reliable way to develop.
9:03 pm on Jul 11, 2012 (gmt 0)



It's for people who download my software - would be nice if it worked straight from the file system.
 

Featured Threads

Hot Threads This Week

Hot Threads This Month