2011-01-25 11 views
1

、私は私が唯一の画像を作成するために許可されていたコンテキストを持っているが、私は、ソースを決める前にスクリプトを実行したいので、私は思ったんだけど:javascript:pseudo-protocolを使用して画像のソースを設定することはできますか?これが可能であれば基本的に

<img src="javascript:{load a remote script and run it to figure out the source}" /> 

私が思いついた回避策は次のとおりです:

<img src="any-old-image.gif" onload="document.write('<scr' + 'ipt src=\"http://mysite-script.js\"'></scr' + 'pt>');" /> 

しかし、私は少しクリーナーができることを望んでいます。

P.S.私は "javascript:"は引用符で囲まれていない悪であることを認識しています。これは特別な状況です。

+0

可能な重複:http://stackoverflow.com/questions/116967 – user123444555621

+0

私は同意多分これはdocument.writeより少しクリーナーです。 123456 – sprugman

答えて

1

必要なデータをすべて集めて(XMLHttpRequestなどの方法で)サーバーに送信する関数を作成します。サーバーからの応答を調べ、使用するイメージを決定する関数を作成します。あなたは、直接あなたのイメージへのURLを設定することができます。

document.getElementById("myImage").src = myImageSrc; 

編集:コメントへの対処します。

あなたがimg要素自体で悩んでいるのであれば、正しいです、img.onloadはあなたが望むものです。そして、スクリプトの数行以上のものがある場合、スクリプトのインポートは合理的です。

document.body.appendChild(document.createElement("script")).src = 
    "http://mysite.com/myscript.js"; 
+0

これを行うには、使用可能な関数を持つスクリプトを用意する必要があります。そのスクリプトを利用できるようにするために、上で概説した画像のロードハックによってロードする必要があるようです。 – sprugman

+0

@スプレッドマン:あなたの投稿とコメントを再読した後、うわー、それらは多くの制限があります。あなたがそれを達成する方法は、 "ハック"になります。スクリプトをインポートすることは、あなたの制限に従って、意味があります。 – gilly3

+0

ええと...私はもっとエレガントな何かが欠けていたかどうかを確認するつもりだと思った。しかし、ありがとう。 (私はappendChildの改良が好きです。) – sprugman

0

サーバー上で何ができたらいいですか。あなたはsrc属性をあなたのサーバ側のスクリプトを指すようにして、あなたが望むものを実行した後でイメージを書き戻すことができます。

あなたの問題にも合っているかどうかはわかりません。

+0

私はクライアント上でいくつかのデータを収集し、それをサーバーに送信して処理し、その後実際のイメージを取得する必要があります。 – sprugman

関連する問題