4

MTurk HIT で jQuery を使用していくつかのことを行っていますが、そのうちの 1 つが原因であると推測しています。iframe から周辺のドキュメントにアクセスする必要がないので、もし私がいるのであれば、どこでそれが起こっているのか、それを止める方法を知りたいです!

それ以外の場合、MTurk は何か間違ったことをしている可能性があります (&たとえば、5 文字のトークンを使用して iframe URL の URL 引数を分離しているため、間違いなく間違ったことをしています)。

問題の原因となっている可能性のあるスニペットを次に示します。これはすべて、MTurk HIT** (および関連する) ページに埋め込まれた iframe 内からのものです。

  1. JS を に埋め込んでい$(window).load()ます。私が理解しているように$(document).ready()、後者はiframeがロードされるのを待たないため、代わりにこれを使用する必要があります。私が間違っている場合は、私を修正してください。

  2. window.location.hrefまた、workerIdを抽出するためにRegExp.exec を実行しています。

これが重複している場合は、事前にお詫び申し上げます。確かに-これを書いた後、SOはこれについて良い推測をしたようです: Debugging "unsafe javascript attempts 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) {}

4

2 に答える 2

2

これはあなたの質問に対する直接的な回答ではありませんが、私たちのラボでは、別のポップアップ ウィンドウを開く iframe 内のボタンをクリックするようワーカーに依頼することで、この問題を回避する (ハックを読む) ことに成功しています。ポップアップ ウィンドウ内で、AMT のセキュリティ アラームをトリガーすることなく、必要な jQuery やその他の標準 JS リソースを自由に使用できます。この方法には、ワーカーが AMT の小さな埋め込み iframe の代わりにフルサイズのブラウザー ウィンドウでタスクを表示できるという追加の利点があります。

于 2013-08-11T02:51:34.067 に答える