QuickTime对象的SetURL方法未定义?
时间:2020-03-06 15:02:29 来源:igfitidea点击:
我在页面上有一个隐藏的嵌入式QuickTime对象,该对象正试图通过JavaScript进行控制,但无法正常工作。该对象如下所示:
<object id="myPlayer" data="" type="audio/mpeg" pluginspage="http://www.apple.com/quicktime/download" width="0" height="0"> <param name="autoPlay" value="false" /> <param name="controller" value="false" /> <param name="enablejavascript" value="true" /> </object>
data参数中没有任何内容,因为在渲染时,我不知道将要加载的URL。我将其设置为:
var player = document.getElementById("myPlayer"); player.SetURL(url);
稍后将播放音频:
player.Play();
Firefox 3.0.3在JavaScript控制台中不会产生任何错误,但是在调用Play()
时不会发生任何播放。 Safari 3.0.4在控制台中产生以下错误:
"Value undefined (result of expression player.SetURL) is not object."
Internet Explorer 7.0.5730.11提供以下极其有用的错误消息:
"Unspecified error."
我的计算机上安装了QuickTime版本7.4. 苹果的文档说SetURL()
是正确的,那么为什么它不起作用?
解决方案
我不知道QuickTime API,但这可能值得一试:
player.attributes.getNamedItem('data').value = 'http://yoururlhere';
我们链接到的页面没有提及"数据"属性。它们在对象中具有EMBED和PARAM,并且EMBED的'src'属性具有url,但是我在我们发布的内容中看不到EMBED。
尝试通过JavaScript与插件通信时,为对象元素提供一定的宽度和高度(1px x 1px),并使其在视口内可见。
我注意到,如果插件区域在屏幕上不可见,则它对JS命令无响应。
这也许可以解释为什么这在IE中对我们不起作用。
Safari和Opera应该可以工作,但是FireFox肯定需要Netscape风格的embed元素,实际上我们应该同时提供这两个元素。此外,一旦拥有了两者,就需要确定要在哪个浏览器中寻址的元素(对象与嵌入)。