我正在MTurk HIT中使用jQuery做几件事,我猜其中一个是罪魁祸首。我不需要从iframe中访问周围的文档,因此,如果我愿意,我想知道这是怎么回事以及如何停止它!
否则,MTurk可能做错了某些事(例如,它们使用5个字符的 token &
分隔iframe URL中的URL参数,因此它们肯定会做错事)。
以下是可能导致此问题的代码段。所有这些都来自嵌入在MTurk HIT **(及相关页面)页面中的iframe中:
$(window).load()
中。据我了解,我需要使用它代替$(document).ready()
,因为后者不会等待我的iframe加载。如果我错了,请纠正我。 window.location.href
上运行RegExp.exec以提取workerId。 如果这是重复的事,我事先表示歉意。确实-在编写此代码之后,SO似乎对此做出了很好的猜测:Debugging "unsafe javascript attempt to access frame with URL ... "。如果我先解决这个问题,我会回答这个问题。
获得关于在哪里可以学到这种东西的很好的高级引用将是很棒的。它不自然地适合我所知的任何主题-也许了解跨站点脚本编写,这样我可以避免它?
**如果您不知道,那么MTurk HIT是在MTurk上执行任务的人员的工作单元。如果导航到http://mturk.com并查看HIT,则可以很快看到它们的外观。
我已经将代码跟踪到在inject.js文件的jquery中运行的以下块:
try { isHiddenIFrame = !isTopWindow && window.frameElement && window.frameElement.style.display === "none";} catch(e) {}
最佳答案
我在通过Chrome在MechanicalTurk中运行jQuery时遇到类似问题。
对我来说,解决方案是下载所需的jQuery JS文件,然后将它们上传到安全的Amazon S3服务。
然后,在HIT中,我将.js文件放在https://s3.amazonaws.com的新位置。
有关如何根据chrome的标准使代码“安全”的提示,请点击此处:
http://developer.chrome.com/extensions/contentSecurityPolicy.html