javascript无法在chrome / opera / IE中工作,但firefox非常棒!

时间:2010-06-30 11:46:16

标签: javascript cross-browser

我有这个代码,只在firefox中工作。

 <script type="text/javascript">
    function setVideo(url){
        url = url.replace("watch?v=","v/","i");
        var movie = document.getElementById('movie');
        movie.setAttribute('src',url+"&hl=en&fs=1&");
        var param = document.getElementById('paramm');
        param.setAttribute('value',url+"&hl=en&fs=1&");
    }
</script>

<object width="425" height="344">
            <param name="movie" id="paramm"></param>
            <param name="allowFullScreen" value="true"></param>
            <param name="allowscriptaccess" value="always"></param>
            <embed id="movie" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344" src=""></embed>
        </object>

<a href="#" onclick="setVideo('http://www.youtube.com/watch?v=3h1qQaRxY40')">example</a>

请帮助,我不知道,这是一个如此简单的脚本,为什么它不工作? 感谢

4 个答案:

答案 0 :(得分:6)

您正尝试动态更改embed元素中的视频源。这是非常棘手的,实际上需要为除Firefox以外的浏览器提供解决方法。

这个问题似乎提供了一个解决方案:Dynamically change embedded video src in IE/Chrome (works in Firefox)

答案 1 :(得分:3)

您没有提供任何错误消息,因此很难说需要修复的内容......

我注意到的一件事是你对“替换”方法使用非标准语法。

有关解释和替代方案,请参阅https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/replace

答案 2 :(得分:2)

在调用setVideo函数时,您应该使用类似swfobject(http://code.google.com/p/swfobject)的东西来嵌入ENTIRE flash对象 - 不要只是更改url。 IE和Chrome可能无法识别这种变化。

答案 3 :(得分:1)

不要将setAttribute与值一起使用。它是cause problems已知的。

function setVideo(url){
    url = url.replace("watch?v=","v/";
    var movie = document.getElementById('movie');
    movie.src = url+"&hl=en&fs=1&";
    var param = document.getElementById('paramm');
    param.value = url+"&hl=en&fs=1&";
}