1

メタ、リンク、およびスクリプトのブロックを jQuery Mobile ページに動的に追加しようとしています。

スクリプトにはルールが含まれています。JavaScript を介して CSS スタイル シートに追加しています (残念ながらこのようになっている必要があります)。

次のようになります。

<script type="text/javascript"
if ('addRule' in sheet) {
sheet.addRule(".splash:before",
  "background: url("' + x + '") no-repeat center center fixed; " +
  "-webkit-background-size: 100%; -moz-background-size: 100%; " +
  "-o-background-size: 100%; background-size: 100%; " +
  "-webkit-background-size: cover; -moz-background-size: cover;" +
  "-o-background-size: cover; background-size: cover;", 0);
} else if ('insertRule' in sheet) {
sheet.insertRule(".splash:before { " +
  "background: url("' + x + '") no-repeat center center fixed; " +
  "-webkit-background-size: 100%; -moz-background-size: 100%; " +
  "-o-background-size: 100%; background-size: 100%; " +
  "-webkit-background-size: cover; -moz-background-size: cover; "+
  "-o-background-size: cover; background-size: cover;" + " }", 0); 
}
</script>

これは、コード ブロックがページ ヘッドに追加さxれるときに動的に設定できる背景画像の URL です。

問題は:
私はこれを得ています:

SecurityError: The operation is insecure. [Break On This Error]     
slice.call( docElem.childNodes, 0 )[0].nodeType;

Firebug で報告されました。

x の URL をハードコーディングすると問題なく動作するので、URL 変数が使用されていることについてブラウザーが文句を言うと思います。

質問:
これを回避する方法はありますか? URL を動的に渡す必要があります。

4

2 に答える 2

5

これはほとんどの場合、Same Origin ポリシーに関連する問題です。つまり、ロードするファイル (背景画像、JavaScript ファイル、css ファイルなど) は、同じドメイン、同じサブドメイン、同じプロトコル (http と https)、および同じポートである必要があります。

さらに、これをローカルで実行していますか、それともサーバーで実行していますか? オリジンは技術的には " file:/// " であるため、ローカルで実行するとこれらの問題が発生します。そのため、サーバーでホストされているファイルへのリンクを提供している場合、これらのエラーが発生する可能性があります。

于 2013-02-14T15:39:50.437 に答える