0

jQueryモバイルアプリケーションのiFrameはエラーを引き起こします:Unsafe JavaScript attempt to access frame with URL file:///D:/xx/webpage.html from frame with URL http://www.asp.net/. Domains, protocols and ports must match.

iFrame を使用して外部 Web サイトをロードする jQuery モバイル アプリケーションを開発しています。
私のスクリプトコードは次のとおりです。

  $(document).ready(function () {

$('#divID').prepend('<img  src="http://xxx/images/ICPosternew1002.png" usemap="#map" id="image" style="margin-top:43px;"/>')
    $('#map').append('<area coords="30,0,60,30" id="1" alt="Blah" title="asp" />')
    $("#1").bind("click", function (e) {                
    e.preventDefault();         
           $('#Web1').append('<form id="form1" runat="server" rel="external"></form>')              
        $('#form1').append('<iframe id="iframe1" src="http://asp.net" frameborder="0" rel="external"></iframe>')
        });
    });

アプリケーションに 2 つの仮想ページがあります。メイン ページのイメージ マップをクリックすると、iFrame と対応する Web サイトを含む 2 番目のページが読み込まれます。

         <div data-role="page" id="Web" class="pagebody">
    <div data-role="header" data-position="inline" data-theme="a">
            <!--header-->
        </div>
        <div data-role="content" id="Web1">
    <form id="form1" runat="server">
            <iframe id="iframe1" >
            </iframe>
            </form> 
        </div>
        <div data-role="footer" class="footer">
            <!--footer-->
        </div>
    </div>

それは私のコードの問題ですか?

4

2 に答える 2

0

次の方法で解決できると思います。

                     $(document).ready(function () {

                    var html = "";
                    html += "<div data-role=page id=win2 class=pagebody>";
                    html +=   "<div data-role='header'>";   
                    html +=   "</div>";
                    html +=   "<div data-role=content>";
                    html +=   "</div>";
                    html +=   "<div class=push>";
                    html +=   "</div>";
                    html +=   "<div data-role=footer class=footer>";
                    html +=   "</div>"
                    html += "</div>";
                    $(html).insertAfter ("#index");
                    for(var i=0;i<data.length;i++)
                    {
                        $("#area"+data[i].NodeID+"").bind ("click", function (event)
                        {
                            var title = $(this).attr("src");
                            alert(title);
                            $.mobile.changePage ($("#win2"));
                            $("#win2 div:jqmData(role=content)").empty().append ('<form id="form1" runat="server" rel="external"></form>')
                            $('#form1').empty().append('<iframe id="iframe1" src="'+title+'" frameborder="0" rel="external"></iframe>') 
                        });
                    }       
        });
于 2012-08-23T06:03:11.463 に答える
0

これは、Same Origin ポリシーの問題のように思えます。解決策については、このコミュニティ wiki を参照してください:同じ生成元ポリシーを回避する方法

于 2012-07-27T13:00:35.903 に答える