我正在谈论的网站:https://sephir.ch/vfi/user/lernendenportal/index.cfm
我想制作一个简单的书签,将我的电子邮件和密码填入这两个文本框中。我的JS代码适用于任何其他网站,但不适用于此网站。
HTML:
<input type="text" name="email" size="40" maxlength="60" class="tdschwarz" autocomplete="off">
JS:
javascript:function fill() {alert(document.getElementsByName("email")[0].value);} fill();
错误:
Uncaught TypeError: Cannot read property 'value' of undefined
你们有什么想法为什么它不起作用?提前谢谢。
答案 0 :(得分:2)
由于电子邮件字段位于框架内,因此document
对象与字段的对象不同。
要访问该字段,首先必须获取它所属的文档对象。检查DOM,您必须访问#mainFrame
框架:
var frame = document.getElementsByName("mainFrame")[0];
现在你可以获得元素:
var email = frame.contentDocument.getElementsByName("email")[0];
这适用于现代浏览器。在IE8及更早版本中,有一个很好的document.frames
属性可以使事情变得更容易:
var email = document.frames.mainFrame.document.getElementsByName("email")[0];
答案 1 :(得分:2)
使用window.mainFrame.document
:
javascript:function fill() {alert(window.mainFrame.document.forms['login'].email.value);} fill();
答案 2 :(得分:1)
输入位于iframe中。您首先需要获取iframe,然后获取输入元素。
document.getElementsByName('mainFrame')[0].contentDocument.getElementsByName('email')[0]