0

我选择 HTA 来制作一个小型网站,因为据称它忽略了同源政策。为了测试这一点,我用这 4 个 iframe 编写了一个小型测试站点:

iframe id="google" src="http://www.google.nl" application="yes">
iframe id="test" src="test.html">
iframe id="test2" src="C: /test.html">
iframe id="test3" src="D:/test/test.html">

为所有四个 iframe 准确显示内容。但是,当我使用 JS 获取 iframe 的主体时,我遇到了一个奇怪的问题:

$(document).ready(function() {

alert($("#google").contents().find("body").html());
alert($("#test").contents() .find("body").html());
alert($("#test2").contents().find("body").html());
alert($("#test3").contents ().find("body").html());
});

所有测试 id-s 的警报都按预期工作。但是,#google 的返回未定义。

我运行 HTA 的主文件位于 C:/some/directory/deep/in/test.hta

我究竟做错了什么?

4

1 回答 1

0

您可能误解了 HTA 的安全策略。Usingapplication=yes允许 中的代码访问iframe主窗口,但您无法访问跨域iframe文档,即使使用 HTA。想想会发生什么,如果可能的话!

我能给出的唯一建议是:永远不要在 HTA 中application=yes为第三方iframe(或s)设置。frame这真的很危险,里面的代码iframe可以在你的机器上做任何它想做的事情。

于 2013-03-21T16:39:04.140 回答