2009-06-07 22 views
1

ブックマークレットを作成しようとしています。ブックマークレットをクリックするとexample.com/yourdata.phpがdivボックスに読み込まれます。javascriptで別のhtmlファイルを読み込む方法は?

どうすればexample.comからデータを取得できますか?

IFRAME?またはより良い解決策がありますか?

答えて

2

異なるドメインのデータを取得する(Ajaxを使用して<div />にロードする)別のページ内にブックマークレットを作成する際に問題が発生することがあります。

おそらく、ページのソースとしてコンテンツを含むIFrameを挿入することをお勧めします。

あなたは非常に基本的なライトボックスとしてこれを実行したい場合、あなたはこのような何か行うことができます:

(function() { 

    var iFrame = document.createElement('IFRAME'); 

    iFrame.src = 'http://google.com'; 
    iFrame.style.cssText = 'display: block; position:absolute; ' 
         + 'top: 10%; left: 25%; width: 50%; height: 50%'; 

    document.body.insertBefore(iFrame, document.body.firstChild); 

})(); 

をそしてここでブックマークレット形式で同じコードです:

javascript: (function() { var iFrame = document.createElement('IFRAME'); iFrame.src = 'http://google.com'; iFrame.style.cssText = 'display: block; position:absolute; top: 10%; left: 25%; width: 50%; height: 50%'; document.body.insertBefore(iFrame, document.body.firstChild); })(); 

あなたはまた、可能性あなたが何かかわいいことをしたいなら、これをもっともっとスタイルしてください。これは可能なことの単なる基本的な例です。別の人が言っているように、Ajaxリクエストを使ってjQueryをロードするとかなり簡単になりますが、それはもう少し複雑です。

1

ブックマークレットで直接AJAX呼び出しを行い、divのinnerHTMLを返されたコンテンツに設定します。これにセキュリティ制限があるかどうかは不明です。

編集:ブックマークレットから簡単にjavascriptライブラリをロードできないため、JQueryを使用したくありません。 (多分あなたはAJAX経由でそれを入手して評価することができますが...)

あなたは古典的なXMLHttpRequestをする必要があります。

一部more info here

+1

どのようにですか?私はJqueryで多くの経験がありません。別のサーバーからファイルを読み込むこともできますか?つまり、私がcnn.comにいる場合、私のブックマークレットはexample.comから私のファイルを読み込むことができますか? – chris

1

The Dojo Toolkitであなたは1つのdiv要素にしたい正確に何をやってdijit.layout.ContentPaneまたはdojox.layout.ContentPaneを使用することができます。
dijit.layout.ContentPaneとdojox.layout.ContentPaneの違いは、dojox.layout.ContentPaneの内部でインラインJavaScriptを実行できることです。

0

私は別のドメインのページを出力する私のサーバー上でphp関数を作ることでドメイン制限を回避しました。その方法で、javascriptは、私がajax.updater呼び出しを行うと、同じドメインにあると考えます。

$ sSrcPage = $ _REQUEST ['SrcPage'];

echo file_get_contents($ sSrcPage、0);

関連する問題