gpt4 book ai didi

javascript - 使用 "stringByEvaluatingJavaScriptFromString"单击 UIWebView 中的链接

转载 作者:行者123 更新时间:2023-11-30 09:02:09 26 4
gpt4 key购买 nike

如何使用 UIWebView 中的 stringByEvaluatingJavaScriptFromString 方法单击链接?实际的超链接本身每次都不同,但测试代码中的措辞(“测试”)始终相同。

我该怎么做呢?我有建议执行以下操作(这不起作用并且不执行任何操作):

var fonts = document.getElementsByTagName('font');
for(i=0;i<fonts.length;i++) {
if (fonts[i].innerHTML == 'Test') {
fonts[i].parentNode.childNodes[0].click();
break;
}
}

最佳答案

看起来你有一个答案,包括你需要的 Objective-C 代码,但我想对于 javascript,你可以简单地触发链接的 onclick 的内容或导航到适当的 url,而不是经历模拟的麻烦单击鼠标。当然,我还没有在 iOS 应用程序中对此进行测试,但请随意试一试:

var links = document.getElementsByTagName('a');
for(i=0;i<links.length;i++) {
if (links[i].innerHTML.indexOf('Test') != -1) {
clickLink(links[i]);
break;
}
}

function clickLink(linkobj) {
var onclickHandler = linkobj.getAttribute('onclick');
if (onclickHandler == null) window.location = linkobj.getAttribute('href').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
else eval(onclickHandler(linkobj));
}

顺便说一句,这段代码中有一个 eval 将运行 onclick 处理程序的内容。这可能是不安全的。如果您只需要导航到链接指定的位置,那么您可能希望删除处理 onclick 的部分。

下面打印了一个更简单的版本(因为您的示例代码似乎不需要处理 onclick),它可能更易于使用。在这种情况下,我会在 1 秒延迟后调用它,但实际上,由于这段代码似乎是响应 iOS 端的触发器(按钮单击?)运行的,因此您不应该使用延迟,而只是等待启用触发器直到加载完成 - webViewDidFinishLoad

function clickLink() {
var links = document.getElementsByTagName('a');
for (i = 0; i < links.length; i++) {
if (links[i].innerHTML.indexOf('Prev') != -1) {
window.location = links[i].getAttribute('href').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
break;
}
}
}

setTimeout(clickLink, 1000);

jsFiddle 使用您的示例代码对此进行了演示:http://jsfiddle.net/fzKL7/5/

关于javascript - 使用 "stringByEvaluatingJavaScriptFromString"单击 UIWebView 中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com