【发布时间】:2016-10-24 17:37:54
【问题描述】:
我们想打开一个在视图中打开特定位置的 WebView。 因此,我们希望在显示之前滚动到锚点或跳转到它。
我们尝试在 viewWillAppear 中执行 javascript,但它不起作用。如果我们在viewDidAppear 中执行它,我们会跳转到锚点,这不是一个有效的解决方案。
WebContentView(简单的情节提要,UIView 包含一个 WebView):
class WebContentViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
var fileName: String?
var screenName: String?
override func viewDidLoad() {
super.viewDidLoad()
webView.backgroundColor = UIColor.white
let url = URLRequest(url: Bundle.main.url(forResource: fileName, withExtension: "html")!)
webView.loadRequest(url);
webView.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let screenName = screenName else {
return
}
webView.stringByEvaluatingJavaScript(from: "window.location.href = '#2-einsatz-von-google-analytics';")
}
override func viewDidAppear(_ animated: Bool) {
//webView.stringByEvaluatingJavaScript(from: "window.location.href = '#2-einsatz-von-google-analytics';") //creates a jump instead of a scrole
}
}
尝试过的解决方案和已知问题:
- 使用
scrollTo(hash) {location.hash = "#" + hash;}; scrollTo("anchor");How to scroll HTML page to given anchor using jQuery or Javascript? - Is it possible to send a hash tag to a file url in UIWebView?
我们如何才能在锚点可见之前完成“平滑”滚动或跳转?
【问题讨论】:
-
this 对您的情况有用吗?
标签: javascript html ios swift uiwebview