我正在開發使用WinForms WebBrowser控件的web機器人。一切工作正常,除了在下面的代碼的第二click()
電話:JQuery單擊()錨點標記不啓動從WebBrowser控件內的注入腳本
function SaveRecordClick() {
try {
var menuButton = $('#s_at_m_4');
menuButton.click(); //<-- This is working
var x = $('#s_at_m_4-menu li')[5];
var saveLink = $(x).find('a')[0];
if (saveLink != null){
saveLink.click(); //<-- This is not working
return "1";
}
}
catch (err) {
alert(err.message);
}
return "0";
}
saveLink
不爲空。我知道這是因爲我在條件內放置了一個alert()
調用。
更新代碼與建議的解決方案
function SaveRecordClick() {
try {
var menuButton = $('#s_at_m_4');
menuButton.click();
var x = $('#s_at_m_4-menu li').eq(5);
var saveLink = x.find('a').eq(0);
if (saveLink != null) {
alert(saveLink.html());
saveLink.click();
return "1";
}
}
catch (err) {
alert(err.message);
}
return "0";
}
但還是同樣的問題。 'alert()'工作正常,但html()
顯示內部文本而不是錨的HTML。
HTML代碼
<li data-caption="Save Record [Ctrl+S]" class="sbui-appletmenu-item ui-menu-item" role="presentation">
<a href="javascript:void(0)" aria-disabled="false" class="ui-corner-all" id="ui-id-254" tabindex="-1" role="menuitem">Save Record [Ctrl+S]</a>
</li>
錨標記的ID
是動態生成的。
另外,當從Google Chrome控制檯執行相同的代碼時,會觸發click()
。那麼,這可能是WebBrowser控件的問題嗎?
更新
我認爲球員與繼承Internet Explorer中webrowser控制的問題。所以現在我正在轉向另一個瀏覽器控件並測試它上面的代碼。會讓你知道它是否在那裏工作。
你期待saveLink.click()做什麼?請記住,saveLink不存在jQuery對象。這是元素,因爲您在普通元素上執行[0]而不是eq(0)並單擊()不會導致任何綁定jQuery的點擊處理程序執行。 – Taplar
對於那些說你需要將'saveLink'包裝在'$()'中。 '.click()'是一個DOM函數,它不是** jQuery函數,jQuery有'.click()'將事件處理函數綁定到onclick,即它是'.on 「click」,)' –
@NickA http://api.jquery.com/click/#click click()的第三個選項確實也存在於jQuery中。這是一個簡短的手觸發('點擊') – Taplar