在MacOS X应用程序中,我创建了一个包含WebView的窗口。 WebView在包含锚点的html页面上初始化: 转到谷歌。
我想点击其他课程的链接。
很明显,简单的javascript代码可以解决这个问题:document.getElementById("myLink").click();
所以,我写了那个应该做的小型Objective-c代码:
NSString *cmd = @"document.getElementById(\"myLink\").click();";
id result = [[attachedWebView windowScriptObject] evaluateWebScript:cmd];
if ([result isMemberOfClass:[WebUndefined class]]) {
NSLog(@"evaluation of <%@> returned WebUndefined", cmd)
但我不能让它发挥作用。 如果有人有想法,那确实会有所帮助。
答案 0 :(得分:1)
我认为这与webview无关,只是你的javascript。
如果你在Safari的控制台中试用它会有用吗?我不指望它,因为你只能可靠地跨浏览器点击()输入元素(按钮)。一个JQuery click()应该可以工作。
答案 1 :(得分:1)
所以这是我使用的解决方案。
创建了一个文件: WebAgent.js ,其中包含以下代码:
function myClick(id) {
var fireOnThis = document.getElementById(id);
var evObj = document.createEvent('MouseEvents');
evObj.initEvent( 'click', true, true );
fireOnThis.dispatchEvent(evObj);
}
我的objective-c类中的以下代码
// load cmd.js
NSString *path = @"/code/testagent/WebAgent/WebAgent/WebAgent.js";
NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[[self attachedWebView ]stringByEvaluatingJavaScriptFromString:jsCode];
//do the click
NSString * anchorId = @"myId";
NSString *call = [NSString stringWithFormat:@"WebAgent_click('%@')",anchorId];
[[self attachedWebView] stringByEvaluatingJavaScriptFromString:call];
NB :我使用此解决方案将JS代码放在特定文件中,因为我希望将来有更多的JS代码。
感谢您的帮助。