2017-03-13 2 views
0

私はcontent.jsのコード(run_at:document_end)を使用してファビコン変更するthis solutionを見つけたとき、私のChromeの拡張機能のを:動的ウェブサイトのファビコンを変更する:どのようにdivのラップヘッド

(function() { 
    var link = document.querySelector("link[rel*='icon']") || document.createElement('link'); 
    link.type = 'image/x-icon'; 
    link.rel = 'shortcut icon'; 
    link.href = 'http://www.stackoverflow.com/favicon.ico'; 
    document.getElementsByTagName('head')[0].appendChild(link); 
}()); 

上記の作品不思議。

問題は、div内のドキュメント全体を後で必要なカスタムCSSを適用するときに発生します。

<html> 
    <div id="allContent"> 
    <head></head> 
    <body></body> 
    </div> 
</html> 

この場合、上記の最初のコードはfaviconを変更しません。リンクはファビコンが変更されません(<div id="allContent">内部<head>の一番下に)正しく挿入されますが、

document.getElementById("allContent").getElementsByTagName('head')[0].appendChild(link); 

:私はへの最後の行を変更しようとしました。

誰でも知っていますか?

+3

これは無効なhtmlです。 'head'も' body'も 'div'にラップすることはできません。 –

+0

究極の目標は、ページ全体でいくつかのカスタムCSSを維持しながら、faviconを変更することです。そのため、私はdivとheadとbodyをラップしています。現在のhtml構造ではこれができない場合(Gabyが指摘しているように無効であるため)、私はデザインを再考する必要があります。 – quackkkk

+0

'background-image'を適用できるように' div'が必要ですが、 'html'を直接参照すると動作しません。 @wOxxOm – quackkkk

答えて

0

<div>は、<html><head>の間では無効です。レンダリングエンジンはそれを回避しますが、メタプロパティ(<link rel="icon" ... >など)のような奇妙な副作用が予測できないか無視されることが予想されます。

+0

ちょうど確認するために、 ''と ''の間で有効なhtml要素がありますか?おそらく ''? – quackkkk

+0

@quackkkk恐れていない:[**許可された内容** 1つの ''要素、その後に1つの ''要素](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/) html) – Keith

関連する問題