我在 MTurk HIT 中使用 jQuery 做一些事情,我猜其中一个是罪魁祸首。我不需要从 iframe 访问周围的文档,所以如果我是,我想知道发生在哪里以及如何阻止它!
否则,MTurk 可能会做一些不正确的事情(他们使用 5 个字符的标记&
例如,他们使用 5 个字符的标记来分隔 iframe URL 中的 URL 参数,因此他们肯定会做不正确的事情)。
以下是可能导致问题的片段。所有这些都来自嵌入在 MTurk HIT**(和相关)页面中的 iframe:
我将我的 JS 嵌入到
$(window).load()
. 据我了解,我需要使用它而不是$(document).ready()
因为后者不会等待我的 iframe 加载。如果我错了,请纠正我。我还在运行 RegExp.exec
window.location.href
来提取 workerId。
如果这是重复的,我提前道歉。确实 - 在写完这篇文章之后,SO似乎对此做出了很好的猜测:调试“不安全的javascript尝试访问带有URL的框架......”。如果我在你之前弄清楚,我会回答这个问题。
获得有关在哪里了解此类事情的良好高级参考资料会很棒。它不适合我知道的任何主题 - 也许了解跨站点脚本以便我可以避免它?
** 如果您不知道,MTurk HIT 是人们在 MTurk 上执行任务的工作单元。如果您导航到http://mturk.com,您可以很快看到它们的外观并查看 HIT,
我已经从 inject.js 文件将代码跟踪到 jquery 中运行的以下块:
try {
isHiddenIFrame = !isTopWindow && window.frameElement && window.frameElement.style.display === "none";
} catch(e) {}