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元素,实际上我们应该同时提供这两个元素。此外,一旦拥有了两者,就需要确定要在哪个浏览器中寻址的元素(对象与嵌入)。