Android/Javascript:未捕获的 TypeError 对象 [object] 在 null:1 处没有方法 'click'
Android/Javascript: Uncaught TypeError Object [object] has no method 'click' at null:1
我在网页(在网络视图中打开)中注入 Javascript 代码,以便让应用点击 URL link 并打开该页面。
我正在使用以下代码:
myBrowser.loadUrl("javascript:document.getElementsByTagName('a')[0].click();");
但是它不起作用;它给出了以下错误:"Uncaught TypeError Object [object] has no method 'click' at null:1".
我不明白问题出在哪里,因为我通过 getElementsByID("word").click() 在同一页面(代码的另一部分)注入其他 Javascript 和它正常工作。
我尝试了不同的用户代理,但没有任何改变。
目标SDK为14,最小SDK为9。
有人告诉我 .click() 方法不受 getElementsByTagName 支持,但这是不正确的;我在“Try It Yourself editor”上尝试了相同的代码,它工作正常。
感谢您的支持。
对触发本机点击事件的支持在浏览器中不稳定,尤其是移动浏览器。
由于您只是想打开 window,请使用 window.open()
。
https://developer.mozilla.org/en-US/docs/Web/API/Window/open
编辑...
如果您想伪造点击,请创建一个可从 window 访问的 js 函数,并从 android 应用程序调用它。
window.fakeClick = function(anchorSelector){
var el = document.querySelector(anchorSelector);
el.style.color = "red"; // fake active state
ga.post(...) // send click to analytics somehow
window.open(anchorSelector.href); // open the link
}
在android...
myBrowser.loadUrl("javascript:window.fakeClick('a.someclass')");
我在网页(在网络视图中打开)中注入 Javascript 代码,以便让应用点击 URL link 并打开该页面。 我正在使用以下代码:
myBrowser.loadUrl("javascript:document.getElementsByTagName('a')[0].click();");
但是它不起作用;它给出了以下错误:"Uncaught TypeError Object [object] has no method 'click' at null:1".
我不明白问题出在哪里,因为我通过 getElementsByID("word").click() 在同一页面(代码的另一部分)注入其他 Javascript 和它正常工作。
我尝试了不同的用户代理,但没有任何改变。
目标SDK为14,最小SDK为9。
有人告诉我 .click() 方法不受 getElementsByTagName 支持,但这是不正确的;我在“Try It Yourself editor”上尝试了相同的代码,它工作正常。
感谢您的支持。
对触发本机点击事件的支持在浏览器中不稳定,尤其是移动浏览器。
由于您只是想打开 window,请使用 window.open()
。
https://developer.mozilla.org/en-US/docs/Web/API/Window/open
编辑...
如果您想伪造点击,请创建一个可从 window 访问的 js 函数,并从 android 应用程序调用它。
window.fakeClick = function(anchorSelector){
var el = document.querySelector(anchorSelector);
el.style.color = "red"; // fake active state
ga.post(...) // send click to analytics somehow
window.open(anchorSelector.href); // open the link
}
在android...
myBrowser.loadUrl("javascript:window.fakeClick('a.someclass')");