0

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

起初它似乎与大小写有关,但后来令人困惑的是,我尝试了一些带有一些大写字符的其他 URL,它起作用了。

如果我使用下面的 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,它会按预期工作。该 URLhttp://www.google.com:80/OpenTwinsApp/app/index.jsf似乎也有效。

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

我可以使用其他解决方法吗?

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

更新:

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

1 回答 1

3

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

以下链接特别有助于帮助我了解使浏览器进入 IE 8 标准模式需要做什么 -使用 Doctype 激活浏览器模式

最后,我添加了一个 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。

于 2012-08-13T15:38:56.943 回答