【问题标题】:UIWebView JavaScript troubles in iOS 5 (esp. window.pageYOffset and window.scrollTo)iOS 5 中的 UIWebView JavaScript 问题(尤其是 window.pageYOffset 和 window.scrollTo)
【发布时间】:2011-10-16 09:31:07
【问题描述】:

这个在 iOS 4 下运行良好的 UIWebView 代码在 iOS 5 中不再运行:

// webView is UIWebView loaded with a local PDF file
NString *s = [webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"];

s 的内容始终为“0”,与 webView 的实际位置无关。 和

// webPosition is the desired Y scroll position
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: @"window.scrollTo(0, %d);", webPosition]];

关于定位 webView 并读取在 iOS 5 中有效的位置的任何想法?

【问题讨论】:

    标签: javascript uiwebview ios5


    【解决方案1】:

    您可以使用 UIWebView 的 Scrollview 进行导航,因为 IOS5 不再支持 Javascript:下面的代码对我来说很好。

        [aWebView.scrollView setContentOffset:CGPointMake(x, y)];
    

    contentOffset 接受一个 CGPoint 作为参数。这里 x 和 y 是表示滚动位置的整数值。如果你想获取 webView 当前的 x 和 y 坐标,下面是你可以使用的代码:

    NSInteger x = aWebview.scrollView.contentOffSet.x;
    NSInteger y = aWebview.scrollView.contentOffset.y;
    

    注意: ScrollView 是在 IOS 5 中引入的,不适用于早期的 IOS 版本。 Javascript 功能可用于早期版本。因此您可以检查设备版本并相应地实现代码。

    【讨论】:

    • 嗨 Jeet,我只想纠正一件事。 Javascript 仍在运行;只是 window.scrollTo() 没有。我可以确认这一点,因为基于 Javascript 的文本搜索仍然适用于我,即使基于 Javascript 的滚动不起作用。除此之外,很好的答案!
    【解决方案2】:

    这是来自 Apple MRL 的答案:

    在 iOS 5 中,我们暴露了 UIWebView 的 UIScrollView。你会更好 off 只是保存和恢复 contentOffset 而不是尝试 通过 javascript 执行此操作。

    【讨论】:

      猜你喜欢
      • 2017-08-06
      • 2013-11-24
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多