这似乎是一个简单的问题,但我无法解决这个问题。
基本上我们在工作中使用的网站需要大量重复输入,因此我尝试制作一些JavaScript,自动将文本放入某些网站字段中。我打算通过制作运行JavaScript代码的书签来实现这一目标,因此根据我的需要,我可能会有一些不同的代码。
问题是每当我这样做时它只会出错,因为它在getElementsByName上返回NULL:
document.getElementsByName("user_name")[0].value=("Type Username Here");
在这里,我感到困惑,如果我检查元素并实际看到我试图找到的确切元素,或者当我查看来自的任何来源时,它将完美地工作与它相同的区域(我试图找到的是一个大的iFrame)。如果我只查看基本来源,它仍然无法工作。
我也尝试使用具有完全相同问题的document.getElementById
。
我现在通过将代码粘贴到Chrome上的控制台来运行代码,因此当我尝试运行JavaScript时,所有内容都已正常运行。
如果有人有任何建议,我们将不胜感激。
TL; DR:除非我查看HTML源代码,否则JavaScript无法正常工作。
答案 0 :(得分:1)
我想要找到的是一个大的iFrame
从父页面(具有iframe的页面)访问元素到子页面(iframe中显示的页面)的关键部分基本上是:
bigIframe.contentWindow.document.getElementById('user_name')
但是为了构建这一点,还需要考虑一些额外的代码。 Plunker是一个现场演示,Snippet包含关键部分。
<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>
&#13;
https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/contentWindow