2

これは簡単な問題のように思えますが、私にはうまくいきません。

基本的に、私たちが仕事で使用する Web サイトでは、何度も繰り返し入力する必要があるため、いくつかの Web サイト フィールドに自動的にテキストを入力する JavaScript を少し作成しようとしていました。これを実現するために、JavaScript コードを実行するブックマークを作成して、必要に応じていくつかの異なるブックマークを作成することにしました。

問題は、getElementsByName で NULL を返すため、これを行うたびにエラーが発生することです。

document.getElementsByName("user_name")[0].value=("Type Username Here");

ここで私は混乱しますが、要素を調べて、見つけようとしている正確な要素を実際に見るか、同じ領域からソースを表示すると、完全に正常に機能します(見つけようとしているのは大きな iFrame にあります)。ベースソースだけを表示しても、まだ機能しません。

document.getElementByIdまったく同じ問題があるものも使用してみました。

現在、コードを Chrome のコンソールに貼り付けて実行しているため、JavaScript を実行しようとするとすべてが正常に読み込まれます。

誰かが何か提案があれば、それは大歓迎です。

TL;DR: HTML ソースを見ないと JavaScript は動作しません。

4

1 に答える 1

1

私が見つけようとしているのは大きなiFrameにあります

親ページ (iframe を持つページ) から子ページ (iframe 内に表示されるページ) への要素にアクセスする際の重要な部分は、基本的に次のとおりです。

bigIframe.contentWindow.document.getElementById('user_name')

ただし、この時点まで構築するために考慮すべき追加のコードがいくつかあります。プランカーはライブ デモで、スニペットは重要な部分を備えています。

PLUNKER

スニペット

  <form id='form1' name='form1' action='' method='post' target='bigIframe'>
    <input id='inData' name='inData'>
    <input id='btn1' type='submit'>
<!--iframe points to a blank because Snippet will not function correctly as a full functioning iframe for secrity reasons-->
    <iframe id='bigIframe' name='bigIframe' src='about:blank' width='400' height='300'></iframe>
  </form>

<script>
  var form1 = document.getElementById('form1');

  form1.addEventListener('submit', function(e) {
    e.preventDefault();
    var bigI = document.getElementById('bigIframe');
    var data = document.getElementById('inData').value;
    var iUser = bigI.contentWindow.document.getElementById('user_name');
    iUser.value = data;
  }, false);
</script>

参考文献

https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/contentWindow

于 2016-08-14T04:31:17.407 に答える