2016-08-11 10 views
1

私はChromeでコンソールで、このHTMLを読み込むしようとしているのHTML要素にnullを返しますこの行を実行するとnullまたは無効が返されます。要素を調べてコードを実行すると、意図したとおりに動作し、 "Kr 79"を返します。だから、それは私が気付いていないDOMの問題、またはブラウザ固有の問題ですか?Javascriptがクローム、ソース

私はこれをGoogleタグマネージャの変数として使用していますが、これはケースの50%で動作します。私はウェブページ自体のソースコードにアクセスすることができないので、データを取得するにはちょっとした方法に頼る必要があります。

これは、DOMが準備が整う前にスクリプトが実行されるためですが、これは問題ではないと考えています。ページが読み込まれた後もコンソールでこれをテストしているためです(そしてHTML要素が存在します)、Googleタグマネージャーでは、DOMの準備ができたらタグを起動するように指定しました。

手がかりはありますか?

編集/明確化:私は、ページ自体のコードを変更することはできません、唯一のGTM

+0

あなたの質問には答えられませんが、GTMにはセレクタエンジンが組み込まれており、DOMタイプ変数を使用してDOM要素にアクセスできます。自分のjsを書く必要はありません。 –

+0

ありがとうございました。以前はそれを試していませんでしたが、残念ながら私の問題は解決しませんでした。 – Mikken

+0

ページにあるこのスパン要素はどこにありますか?フォーム要素にラップされていますか? Kr 79はどのように満たされていますか...動的か静的ですか? –

答えて

1

を経由して、私はJSにしようとしている出力ソースを読んでそれは、非同期の問題のように見えます。タグがGTMに発射される方法を変更するようにしてください

//Using Jquery 
$(document).ready(function() { 
    document.getElementById('lblSummaryFreight').innerHTML; 
}); 

または

//Add this at the end of the body, after all of your content 
<script> 
(function() { 
    document.getElementById('lblSummaryFreight').innerHTML; 
})(); 
</script> 
+0

Chromeで、元のJSとJQueryの両方が、要素を調べる前に失敗しました。私のJSリターン "Kr 79"を調べた後、JQueryはページ全体のソースを返すようです。 JQueryがerrormessageを返します。 "Uncaught DOMException: 'ドキュメント'で 'querySelector'を実行できませんでした: '[オブジェクトHTMLDocument]'は有効なセレクタではありません。" コードが検査後に動作することは奇妙ですが、以前は使用できませんでした。私の理解では、ソースを読み込んでブラウザの出力を見ることができたら、コンソールでJavaScriptを使って読み込むことができるはずです。 – Mikken

+0

...私は考えました:何らかの理由で、このサイトを構築した開発者は、サイト全体を

の中にラップしました。 – Mikken

+0

最初にその変数にアクセスする必要がありますか?そうでなければ、 "setTimeout(function、milliseconds);"例えば5秒に設定し、ページを調べる必要があるかどうかを確認します。 – Nestoraj

0

:これを試してみてください。ウィンドウが読み込まれたときにそれらを起動し、再度試してください。 要素が別のjsファイルで変更されている可能性があります。

jQueryの試行は良い点です。私は同様の問題を抱えており、jQueryはそれらをすべて解決しました。

+0

Window Loadedの後に発火を変更しようとしますが、コンソールで動作していない場合は動作しませんGTMのどちらか? – Mikken

+0

はい、そうです。しかし、別のトリガーを追加しようとすることができます。要素を調べたら、情報にアクセスすることができますたぶん要素は、ホバーイベントやTimeOutの後に課金されたり、変更されたりします。遅延を伴うGTMの新しいトリガーを作成するか、いくつかのイベントを強制してみてください(lblSummaryFreightエレメントを見つけようとすると何かがロードされなければならないため)。 – EduardoPastor

+0

コンソールを使用して、要素をクリックした後にスクリプトを実行しようとしましたが、これはうまくいきません。私がDOMを「目を覚ます」ために管理した唯一の方法は、インスペクションまたはリロードです。遅れもどちらもうまくいかないようです。 – Mikken

1

この問題を解決できないようで、一部の気まぐれなソースの障害と思われるため、必要なデータを取得する別の方法を見つけようとします。

は、私が学んだこと:それは他のブラウザで動作するよう

  • 問題は、Chromeに特異的であるように思われます。これは、このコードが実装されているGTMタグがケースの〜50%で正しい値を返すことによってサポートされています。
  • Androidネイティブブラウザでページをテストすると、 'undefined'も返されます。タグを起動するページをリロードした後、正しい値を返します。
  • DOM全体がコンソールで使用できないようです。 。また、この試みた:

    document.getElementsByClassName( '完全')長さが0を返す

が、ソース内のクラスの10件のインスタンスが周りにあります。ページのどこかを調べた後、正しい番号が返されます。

  • スクリプトを実行するのが遅れても、要素のシンボリック検査やページの再読み込みだけが役に立ちます。

私の結論は、このWebページが何らかの形で構築されているということです。ソースが読み込まれた後にソースがメモリから外れてしまうようです。しかし、これは私の理解のレベルを超えたものです。

ありがとうございました!