IE9的bug?由于URL敏感性导致iframe行为不当

时间:2012-08-13 13:39:27

标签: javascript html internet-explorer iframe internet-explorer-9

我在IE 9(9.0.8112.16421)上看到一种奇怪的行为,即使用iframe通过javascript更改iframe.setAttribute( 'src', 'http://..' )的位置时,它会在javascript控制台中引发错误。

起初它看起来与案例有关,但后来又令人困惑的是我尝试了一些带有大写字符的其他网址并且有效。

如果我使用下面的javascript:

frame.setAttribute( 'src', 'http://tidevwls03:7161/OpenTwinsApp/app/index.jsf' );

或..

frame.src = 'http://tidevwls03:7161/OpenTwinsApp/app/index.jsf';

甚至是硬编码的HTML ..

<iframe src="http://tidevwls03:7161/OpenTwinsApp/app/index.jsf"/>

然后我收到以下错误。

SCRIPT5022: DOM Exception: INVALID_CHARACTER_ERR (5) 
core.js, line 1 character 192310

奇怪的是,如果我将OpenTwinsApp部分更改为opentwinsapp,myapp或MyApp,它将按预期工作。网址http://www.google.com:80/OpenTwinsApp/app/index.jsf似乎也有效。

作为一种解决方法;我正在考虑为javascript转发新页面,因为提供URL作为参数似乎没问题。它并不理想,但至少它会起作用。

我还可以使用其他任何工作吗?

这似乎是IE 9中的一个错误?像往常一样,Chrome完美无瑕。

更新

  • 我尝试过只使用HTML设置iframe src,我也收到了相同的错误消息。
  • 我尝试引入一个只会执行document.location.href = 'http://tidevwls03:7161/OpenTwinsApp/app/index.jsf';的转发页面,但这也无法加载相同的错误。
  • 我尝试使用缩短的网址http://goo.gl/Sy4pk来访问该网页,导致同样的错误。

1 个答案:

答案 0 :(得分:3)

问题似乎是因为IE9标准模式。我改为Quirks模式,IFrame内容会加载。在我的实例中,我想更改为IE8标准模式,以便工具提示也适用于输入元素和iframe。

以下链接特别有助于我了解需要采取哪些措施才能使浏览器进入IE 8标准模式 - Activating Browser Modes with Doctype

最后,我添加了<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">的文档类型,然后添加了<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">以使IE浏览器模拟IE 8。