問題

このjQueryエラーメッセージは、クロスドメインコンテンツの読み込みによって発生します。

Error:[Exception... "Access to restricted URI denied"
code: "1012" nsresult: "0x805303f4 (NS__ERROR__DOM__BAD__URI)"

それはあなたのサイトに属していないか、あなたのサイトにあるコンテンツ(別のドメイン名)をロードしていることを意味します。オンデマンドでクロスドメイン(yahoo.com)コンテンツをロードするには、このjQueryの例を参照してください。

<html>
<head>

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<style type="text/css">
    #content{
        border:1px solid blue;
        margin:16px;
        padding:16px;
    }
</style>

</head>
<body>
  <div id="msg"></div>

  <div id="content">
  </div>

  <br/>
  <button id="load">Load yahoo.com</button>

<script type="text/javascript">

$('#load').click(function(){
    $('#msg').text("Loading......");
    $('#content').load("http://www.yahoo.com", function() {
        $('#msg').text("");
    });
});

</script>

</body>
</html>

しかし、これは動作しません。「ロード」ボタンをクリックすると、何もしませんが、「制限されたURIへのアクセスが拒否されました」というエラーメッセージが表示されます。 ** JavaScriptのセキュリティ上の制約のため、クロスドメインコンテンツを読み込むことはできません。

解決策

ダーティな回避策があります – サーバー側の言語でクロスドメインコンテンツを入手してください。たとえば、 “proxy.php”という名前の1行のphpファイルを作成します。

<?php echo file__get__contents($__GET['url']);?>

jQuery側では、ロード関数を次のように変更します。

$('#load').click(function(){
    $('#msg').text("Loading......");
    $('#content').load("proxy.php?url=http://www.yahoo.com", function() {
        $('#msg').text("");
    });
});
</script>

これで、「読み込み」ボタンをクリックすると、必要に応じてクロスドメイン(yahoo.com)のコンテンツがページに読み込まれます。