在IE9中使用PDF插件操作框架的location.href

时间:2011-11-08 21:16:11

标签: javascript pdf internet-explorer-9

在使用Javascript在框架中加载PDF时,我在IE9中遇到了相当奇怪的行为。文档将加载一次,但任何后续调用都将导致SCRIPT65535: Invalid calling object

我正在使用Javascript构建我的网址并通过top.framename.location.href='file1.pdf'加载。如果您在框架中以PDF开头,则会在第一次调用脚本时触发错误。

因此,您似乎不再允许修改加载Adobe Reader插件(版本10)的框架的location.href属性。与HTML文档相同的代码工作正常。

有人知道为什么会改变这种行为,并且除了使用<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">使用IE8仿真之外还有解决方法吗?

我也不是在寻找完全避免使用Javascript的变通方法。有很多选项,比如在其他地方构建链接并使用target属性加载它,但我真的很想用Javascript做这个。

如果您想测试/复制,可以使用:

<frameset cols="150,*">
<frame src="toc.html"/>
<frame src="about:blank" name="otherframe"/>
</frameset>

和toc.html:

<a onclick="javascript:top.otherframe.location.href='1.pdf'">pdf1</a><br/>
<a onclick="javascript:top.otherframe.location.href='2.pdf'">pdf2</a>

2 个答案:

答案 0 :(得分:0)

看看这里:

http://forum.jquery.com/topic/internet-explorer-9-jquery-and-divx

  

当我转到IE9开发人员工具(F12)并在“脚本”选项卡下时,单击   启动调试按钮,我得到有关错误的详细信息:SCRIPT65535:   无效的调用对象脚本块(2),第72行字符4

     

当您查看脚本行72时,此行会突出显示:   appendChildOriginal(元件);

     

然后我转到IE9,管理加载项,在工具栏和扩展下,看看   对于Divx,LLC并禁用Divx Plus Web Player HTML5和DivX HiQ和   重启IE9浏览器。

     

错误消失了,我的网络应用程序运行正常。

答案 1 :(得分:0)

有同样的问题。

在IE9中,框架对象被一些不包含location属性的PDF对象替换。因此,第二次无法使用location更新框架网址。

您可以使用window.open()

解决此问题
window.open('1.pdf', 'otherframe');