我在IE9中使用Javascript在框架中加载PDF时遇到相当奇怪的行为。文档将加载一次,但任何后续调用都将导致SCRIPT65535: Invalid calling object
。
我正在构建我的URL从Javascript和通过top.framename.location.href='file1.pdf'
加载。如果您从框架中的PDF开始,它将在脚本的第一次调用时触发错误。
所以,看起来你不再被允许修改加载Adobe Reader插件(版本10)的框架的location.href
属性。与HTML文档相同的代码可以正常工作。
有没有人知道为什么这种行为被改变,如果有一个解决方案,而不是使用IE8模拟<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
?
我也不寻找完全避免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>
看这里:
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浏览器。
错误消失了,我的web应用程序工作完美。
有同样的问题
在IE9中,frame对象被一些不包含location
属性的PDF对象所取代。所以第二次你不能用location
更新框架url。
你可以使用window.open()
来解决这个问题window.open('1.pdf', 'otherframe');