1

フローティングのサイズ変更可能なコンテンツをページに追加する簡単な関数を作成しました。

function CreateFloatingWindow(id) {
        var win = document.createElement('div');
        $(win).attr('id', id);
        $(win).height(100).width(300).css('background-color', 'red');
        $(win).resizable().draggable();
        $(win).appendTo($('body'));
        $(win).load('http://www.fantasy-mmorpg.com/fowiki/#1419~2');
}

CreateFloatingWindow('first');

ロードされたページに何らかのJavaScriptが含まれている場合を除いて、コードは正常に機能します。この場合、結果は 次のような「JavaScriptをアクティブにしてください」というメッセージになります。

メッセージはターゲットページ自体によって処理されると思いますが、そのソースにアクセスできません。

jQueryを介してdivにロードされている場合でも、JavaScriptが有効になっていることをターゲットページに認識させる方法はありますか?

注意:上記のコードを正しく実行するには、jQueryとjQuery-UIが必要です。

4

1 に答える 1

2

私は掘り下げており、注意すべき点がいくつかあります。

まず、jQuery .load()ドキュメント内のこの句は、いくつかの光を当てる可能性があります。

スクリプトの実行

接尾辞付きのセレクター式のないURLを使用して呼び出す場合、スクリプトが削除される前に.load()コンテンツが渡されます。.html()これにより、スクリプトブロックが破棄される前に実行されます。.load()ただし、URLにセレクター式を追加して呼び出された場合 、DOMが更新される前にスクリプトが削除されるため、実行されません。両方のケースの例を以下に示します。

ここで、ドキュメントの一部として#aにロードされたJavaScriptはすべて正常に実行されます。

1$('#a').load('article.html');

ただし、次の場合、#bにロードされているドキュメントのスクリプトブロックは削除され、実行されません。

1$('#b').load('article.html #target');

「JavaScriptをアクティブにしてください」というメッセージがないか、別のブラウザで確認してください。これがスクリプトレベルなのかブラウザレベルなのかはわかりません。しかし、「 JavaScriptを有効にしてください」はおそらくHTMLフォールバック<noscript>であると確信しています-JavaScriptをまったく実行していない場合。

于 2013-03-13T13:11:46.693 に答える