1

以下は私の質問の説明です:

サイトにブックマークレット機能を追加しました。このために、私は自分のサイトに「私のブックマーク」というリンクを 1 つ用意しました。そのリンクをブックマークにドラッグすると、ブックマークに追加されます。だから、今から、「yahoo.com」などの他のサイトにアクセスすると..そのサイトのコンテンツが好きなので、そのコンテンツを選択してブックマークから「私のブックマーク」をクリックすると、私の 1 ページが開きます。 「yahoo.com」の子要素としてのサイト。

そのために、以下のコードを JavaScript で追加しました。ここで、ifrme src は私のサイトの URL です。

 var div = document.createElement("div");

  div.id = "instacalc_bookmarklet";

  var str = "";
  str += "<table id='instacalc_bookmarklet_table' valign='top' width='570' cellspacing='0' cellpadding='0'><tr><td width ='850' height='880'>";
  str += "<iframe frameborder='2' scrolling='yes' name='instacalc_bookmarklet_iframe' id='instacalc_bookmarklet_iframe' src='" + iframe_url + "' width='850px' height='875px' style='textalign:right; backgroundColor: white;'></iframe>";
  str += "</td><td id='closetd' onClick='toggleItem(\"instacalc_bookmarklet\");' style='background: #FFDDDD;' title='click to close window' valign='top' align='center' width='20px'>";
  str += "<a href='javascript:void(0);' style='width:100%; text-align: middle; color: #FF0000; font-family: Arial;'>x</a>";
  str += "</td></tr></table>";

  div.innerHTML = str;

  div.onkeypress = keyPressHandler;
  document.body.insertBefore(div, document.body.firstChild);

ここで、1 つのテーブル タグを追加し、その中に 2 つの td を追加したことを確認できます。 .

さて、私の質問は..私は自分のサイトに「閉じる」ボタンを持っています..それのonclick...ウィンドウを閉じたい..(上記のjavascriptの「閉じる」ボタンと同じアクション..「toggleItemを呼び出す」 " 関数)

しかし、私の問題は..私のiframeでは、div要素にアクセスできません..

私は次のように書いています

<a href="#bookmarklet" onclick="closethis();">Close</a>


<script>

    function closethis()
    {

      id='instacalc_bookmarklet';
      var item = parent.document.getElementById(id);
      if(item){
        if ( item.style.display == "none"){
          item.style.display = "";
        }
        else{
          item.style.display = "none";
        } 
      }
    }


</script>

しかし、その閉じるリンクのonclick..行var item = parent.document.getElementById(id);でjavascriptエラー「プロパティwindow.documentを取得する権限が拒否されました」が表示されます。

何か案は?

前もって感謝します。

4

1 に答える 1

2

これはセキュリティ上の理由から JavaScript によって禁止されており、変更することはできません。制限を回避するいくつかの方法があります:

  • コールバック関数を使用して、データを JSONP としてロードします。これはあなたのケースに合わないかもしれません。
  • foreight ドメインを対象とするアクションで Web ページにフォームを作成し、送信し、応答を取得してからフォームを削除します。
于 2009-08-20T10:20:54.797 に答える