2016-12-03 7 views
1

JSを使用して、HTML文書のコンテンツ全体を、base64文字列の1つの画像に置き換える方法を探しています。Javascriptを使用してすべてのhtmlコンテンツをbase64画像に置き換えます。

ブラウザにURLを直接ロードすると、URLが表示されたときに特定のプロパティが表示されます。例えば、ウィンドウサイズより大きい場合、画像を拡大する画像をクリックするまで、画像は縦横比が調整されます。

しかし、私は単に何かのような...

document.write('<img src="data:image/png;base64,..." />'); 

をすれば、...画像が表示されますが、それはより良い用語の欠如のために、それらの「ネイティブ」な特性を示すことはありません。

ブラウザにコンテンツのすべてをbase64でエンコードされたイメージに置き換えるよう指示する方法はありますか?あるいは、可能であればネイティブイメージの振る舞いを模倣するための何らかの方法がありますか?

+1

これを行う最も簡単な方法は、ブラウザをデータURLにリダイレクトすることです。あなたはコンテンツに対する何らかのコントロールを断念しており、異なるブラウザには異なる制限があります。私の場合は、同様のことをする既存のJSライブラリを探します。 – lonesomeday

+0

私のアプリケーションのデータURLに向けての問題は、大きな画像に大量のbase64文字列があり、実際にブラウザが遅くなる傾向があることです。 –

答えて

1

document.writeは使用しないでください。まず、発生している問題が発生します。第二に、それは遅く、安全ではない。可能であればDOMを使用してください:

// Store list of all child elements 
var list = document.body.children; 
// Loop through list 
for (var i = 0; i < list.length; i++) { 
    // Use native DOM method to remove child 
    document.body.removeChild(list[i]); 
} 
// Use native DOM method to create an image element 
var img = document.createChild('IMG'); 
// Set the src of that image to your string 
img.src = 'base64string'; 
// Use native DOM method to append image to document body 
document.body.appendChild(img); 
+0

残念ながら、それはどちらもうまくいきませんでした。ブラウザウィンドウよりも大きな画像は自動的に縮小されず、ネイティブ画像のURLが行う「クリックして拡大/縮小」する機能もありません。 –

+1

あなたがしようとしていたことを誤解しました。あなたが参照している機能がJavaScriptやDOMではなくブラウザの機能であるため不可能です。 @lonesomedayが上で述べたように、 'window.location.href = 'data:image/png; base64 ...'のようなものは、あなたが望むことをするでしょう。ただし、この時点では、ページに対するスクリプト制御は失われます。 –

関連する問題