如果你看一下在調試你的HTML,如Chrome瀏覽器調試器,你會發現你有ID =「登錄,對話框的電子郵件」的輸入元素的兩個實例。
W3C規範指出,在一個HTML文檔中只能使用一個id屬性的實例,而瀏覽器供應商以這樣的方式實現此規範,即如果行爲被認爲是未定義的,則多個id屬性頁面上的值相同。
根據我的經驗,這實際上隻影響帶有所述id的元素的第二個實例,如果您搜索login-dialog-email並檢查哪個元素被突出顯示,您會看到第二個實例是代表你的形式的那個。
刪除第一個實例,或使用唯一的ID,然後您將能夠定位元素。
此登錄場的第一個實例似乎是隱藏在頁面上的模板的一部分。
<div id="login-form-template" style="display: none">
<form accept-charset="UTF-8" action="https://auth.gamesalad.com/auth/signIn" class="dialog dialog-form" id="common-login-form" method="post">
...
<li class="email">
<label for="login-dialog-email">
Email:
<input id="login-dialog-email" name="emailAddress" type="text" value=""></input>
</label>
</li>
<li class="password">
<label for="login-dialog-password">
Password:
<input id="login-dialog-password" name="password" type="password" value="">
</label>
...
本場的第二個實例實際上出現的fancybox,這哪裏是實際的HTML位於您努力的目標內。
<div id="fancybox-content" style="border-top-width: 10px; border-right-width: 10px; border-bottom-width: 10px; border-left-width: 10px; width: 300px; height: 233px; "><div style="width:300px;height:auto;overflow: auto;position:relative;">
<form accept-charset="UTF-8" action="https://auth.gamesalad.com/auth/signIn" class="dialog dialog-form" id="common-login-form" method="post">
...
<li class="email">
<label for="login-dialog-email">
Email:
<input id="login-dialog-email" name="emailAddress" type="text" value="">
</label>
</li>
<li class="password">
<label for="login-dialog-password">
Password:
<input id="login-dialog-password" name="password" type="password" value="">
</label>
<span>
...
因此,即使網站所有者試圖從目標頁面這些領域,他/她將有同樣的問題。
解決這個問題是使用任何模板內的className屬性。這確保所有的字段都可以通過DOM方法進行定位。
但是,這並不意味着你不能仍然瞄準的元素:
的JavaScript:
document.getElementsByClassName("email")[2].
getElementsByTagName("input")[0].value = "[email protected]";
的jQuery:
該網站是使用jQuery,所以你也可以使用這個:
$('input[name="emailAddress"]').val("[email protected]");
你指的是哪一頁? – jmort253
對不起,幾乎忘了添加它。 – ManOx
再次,您需要添加的下一件事是您試圖用來訪問這些字段的代碼。這給了我們一個開始的地方,也讓你看起來像你自己嘗試過/完成了研究。祝你好運! – jmort253