我正在尝试检查webView中的URL是否已更改。例如,如果我最初加载像Wordpress登录页面的页面,我想知道它何时更改并重定向到登录页面。我尝试使用此资源enter link description here,但答案似乎不完整,不起作用。
func validateUrl (stringURL : NSString) -> Bool {
var urlRegEx = "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+"
let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[urlRegEx])
var urlTest = NSPredicate.predicateWithSubstitutionVariables(predicate)
return predicate.evaluateWithObject(stringURL)
}
urlTest永远不会被调用,所以我不确定它的用途。
if (validateUrl(stringURL: "http://google.com")) {
//will return true
print("Do Stuff");
}
else {
print("OTHER STUFf")
//If it is false then do stuff here.
}
然后调用此函数
func webView(WebViewNews: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
if (validateUrl(request.URL().absoluteString())) {
//if will return true
print("Do Stuff");
}
}
我在代码的末尾添加了一个返回函数,但该示例不包含返回值。我对Webview的经验很少,所以任何建议或帮助都会受到赞赏。
答案 0 :(得分:0)
使用UIWebViewDelegate的webViewDidFinishLoad函数获取webview中加载的当前URL。每次webview加载URL时,都会调用webViewDidFinishLoad函数。
class YourClass: UIViewController, UIWebViewDelegate {
let initialURL = URL(string: "https://www.google.com.pe/")
@IBOutlet weak var webView:UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.loadRequest( URLRequest(url: initialURL) )
}
func webViewDidFinishLoad(_ webView: UIWebView) {
if webView.request != URLRequest(url: initialURL!) {
//DO YOUR STUFF HERE
}
}
}