我正在编写一个iPhone应用程序,它使用一些javascript代码来获取UIWebView上的一个点的元素。
我在iPhone上有一些经验,但没有javascript经验,我发现教程上的代码(here)
// Javascript code
function MyAppGetHTMLElementsAtPoint(x,y) {
var tags = ",";
var e = document.elementFromPoint(x,y);
while (e) {
if (e.tagName) {
tags += e.tagName + ',';
}
e = e.parentNode;
}
return tags;
}
// iPhone code
NSString *tags = [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"MyAppGetHTMLElementsAtPoint(x,y);"]]
if ([tags rangeOfString:@",A,"].location != NSNotFound) {
NSLog(@"Link found");
....
}
问题是我已经使用Google搜索网页测试了此代码,但我没有收到“找到链接”日志。
我认为这可能是因为页面不是完整的HTML,但我不能再做任何事了。
谢谢!
PD:我有同样的问题,但在所有页面上都没有,带有IMG标签(可能是因为CSS)答案 0 :(得分:2)
某些XHTML模式会在您将其放入源代码时返回tagName
,因此它可能会更低。尝试拨打
tags += e.tagName.toUpperCase() + ',';
如果那不是问题,那么tags
字符串包含什么?
完全无关的建议
数组是创建逗号分隔列表的最佳方式
function MyAppGetHTMLElementsAtPoint(x,y) {
var tags = [];
var e = document.elementFromPoint(x,y);
while (e) {
if (e.tagName) {
tags.push(e.tagName);
}
e = e.parentNode;
}
return tags.join(',');
}
我提供了一个JSFiddle http://jsfiddle.net/cgpVk/1/,证明该功能正常运行。你可能没有传递正确的坐标
答案 1 :(得分:0)
您是否每次尝试记录e.tagName
?然后你就可以看到你为这些链接获得了什么。
答案 2 :(得分:0)
根据@JuanMendes的建议,问题在于iPhone传递给javascript函数的坐标。
// Not working code
// Searches the location on the main view, that is the full screen
CGPoint pt = [gestureRecognizer locationInView:self.view];
// Working code
// Searches the location only on the webView
CGPoint pt = [gestureRecognizer locationInView:self.webView];
感谢那些帮助我的人,尤其是@JuanMendes