2017-09-22 4 views
0
<script> 
document.getElementById("CybotCookiebotDialogBodyContentText").innerHTML += ' | <a href="https://www.google.com/">Google</a>' 
</script> 

Google Chromeのコンソールでこのコードを試しました。私は成功した。しかし、コピーして "JavaScript(Footer)"または "JavaScript(Header)"(ここでは外部JavaScriptファイルです)に貼り付けると、 "Index:208 Uncaught TypeError:プロパティ 'innerHTMLを読み取れません'of null'(可能性のある問題:!重要な[JavaScriptのコードのどこに?]というCookieバナーをロードする時間[時差])を宣言します。ありがとうございました。Cookiebot(外部JavaScript)のCookieバナーにアンカーテキストと通常のテキストを挿入する(JavaScript経由で追加する)方法は?

+0

これまでに持っていたHTML/JSで質問を更新できますか?いずれにしても、DOM要素が更新されると、DOM要素を更新するコードを起動する必要があります(または)JSを ''タグのすぐ上にコピーする必要があります。 –

+0

よく**プロパティ 'innerHTML'を読み取ることができません**はあなたのセレクタで要素を見つけることができなかったか、または「innerHTML」を持っています。 "JavaScript(Footer)"または "JavaScript(Header)"にコピー&ペーストするとはどういう意味ですか?あなたはアクセスしていないページにこのスクリプトを実行しようとしていますか?あなたがスクリプトを実行しようとしているページを所有している/所有している場合は混乱しています...また、セレクタを実行する前にページがロードされていることを確認するために、スクリプトをaa domの準備関数に入れてみてください.... – NewToJS

答えて

0

Javascriptが実行されているときに要素が存在しない可能性があります。そのため、エラーが発生しています。

「nullのinnerHTMLを読み取ることができません」というエラーは、document.getElementById("CybotCookiebotDialogBodyContentText")nullを返していることを示します。

#CybotCookiebotDialogBodyContentTextが存在するのを待ってから、それを更新してください。

ページが読み込まれた直後に#CybotCookiebotDialogBodyContentTextが利用可能な場合は、JSを<body>要素の末尾に移動してください。それ以外の場合は、次のようなポーリング機能を設定する必要があります。

function waitFor(element, f) { 
    if (document.querySelector(element)) { 
     f(); 
    } else { 
     waitFor(element, f); 
    } 
} 

waitFor('#CybotCookiebotDialogBodyContentText', function() { 
    document.getElementById("CybotCookiebotDialogBodyContentText").innerHTML += ' | <a href="https://www.google.com/">Google</a>' 
}) 
+0

または単に 'window.onload = function(){}'のようなイベントリスナを使用してください。まあ...スクリプトをHTMLコンテンツに混ぜるのではなく、 ''タグでスクリプトを保存したい人や、問題の要素がロードされている場合には必ず動作しない ' ' – NewToJS

+0

の一番下にページが既にロードされた後に入ってくる可能性があるため、非同期的に発生します。 – Bricky

+0

したがって、 'body'の下にスクリプトを置くことのあなたの提案は、どちらもうまくいきません.... DOM準備関数を使うと、ページの要素/要素が動的に作成されている場合は、私の提案とあなたの両方がうまくいかないでしょう。要素が存在するかどうかを確認する間隔を設定し、見つかるまでループするように設定されている場合は、間隔をクリアして残りのソースコードを実行します。私が間違っていると言って、自分の提案の利点をすべて取り除いただけです。 – NewToJS

関連する問題