【发布时间】:2012-08-13 13:39:27
【问题描述】:
我在我的 IE 9 (9.0.8112.16421) 上看到一个奇怪的行为,即在使用 iframe.setAttribute( 'src', 'http://..' ) 通过 javascript 更改 iframe 的位置时,它会在 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,它会按预期工作。 URL 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';,但这也无法加载并出现相同的错误。 - 我尝试使用缩短的 URL
http://goo.gl/Sy4pk访问该页面,结果同样的错误。
【问题讨论】:
-
硬编码的 HTML 版本不可能给你一个 JavaScript 错误。您需要使用未缩小版本的 JavaScript 代码运行测试,以便更清楚地了解正在发生的事情。
-
为什么你认为重定向失败了?更有可能是您的目标页面存在问题,并且重定向对其他 URL 有效,仅仅是因为目标页面不存在。 Chrome 工作并不意味着它应该工作。 HTML 遇到麻烦正是因为一切正常。问题是它在每个浏览器中的工作方式都不同。
-
您是否尝试过重新键入它,只是为了确保不可见的字符不会通过复制粘贴而滑入并因此导致“无效字符”? (不是很可能的原因,但可以快速排除)。
-
@Pointy:很遗憾,以下 HTML 触发了它:ttp://www.w3.org/TR/html4/loose.dtd" rel="nofollow" target="_blank">w3.org/TR/html4/loose.dtd">
-
@JonHanna:是的,我已经尝试过很多次了。没有快乐。
标签: javascript html internet-explorer iframe internet-explorer-9