【问题标题】:Deselect highlighted link when webView:shouldStartLoadWithRequest:navigationType: returns false当 webView:shouldStartLoadWithRequest:navigationType: 返回 false 时取消选择突出显示的链接
【发布时间】:2010-01-04 23:07:33
【问题描述】:

我在 UIWebView 中显示一些带有链接的 HTML。我希望在用户确认确实应该打开链接后在 Safari 中打开链接。

打开链接可以正常工作,但如果用户取消,链接将保持选中状态并以蓝色突出显示。如何取消选择链接并摆脱突出显示?

- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
 if (navigationType == UIWebViewNavigationTypeLinkClicked) {
  self.url = request.URL;
  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Open the Link in Safari" message:[request.URL absoluteString] delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK"];
  [alert show];
  [alert release];
        return false;
    }
    return true;
}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
 if (buttonIndex == 1) {
        [[UIApplication sharedApplication] openURL:url];
 }
 // Insert magic deselection code here
}

更新:似乎 [UIWebView stringByEvaluatingJavaScriptFromString:] 是要走的路。但具体如何?我试过了

for (var e in document.getElementsByTag("a")) {e.blur();}

但无济于事。

【问题讨论】:

    标签: javascript iphone uiwebview webkit


    【解决方案1】:

    我认为这是底层 WebKit 代码的症状以及 MobileSafari 模拟“鼠标”位置的方式。

    您可以尝试将这些元素的 CSS 设置为:

    a.YourElementClassName:hover { text-decoration: none; }
    

    如果我的猜测是正确的,它变成蓝色并带有下划线的原因是因为 Safari 认为鼠标光标现在位于该元素上。使用正确的 CSS 选择器组合应该可以修复它。 (可能需要添加 :visited 和 :visited:hover 才能确定。)

    【讨论】:

      【解决方案2】:

      您必须使用 UIWebView stringByEvaluatingJavaScriptFromString: 和 document.getElementById('yourlinksid') 之类的东西来将状态设置为取消选择。

      如果文件不是太大,您可以尝试使用 js 选择所有元素(使用 xpath 或 css 选择器获取函数),然后将它们设置为取消选择,而不是尝试找到特定的元素。我没有想到这方面的 JS 配方,但 UIWebView JS 界面是你必须这样做的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-18
        • 1970-01-01
        • 2021-05-19
        • 2023-03-22
        • 1970-01-01
        相关资源
        最近更新 更多