【发布时间】:2010-08-18 05:01:15
【问题描述】:
我正在尝试在页面的 onLoad 事件触发之前执行一些 JS。
但我无法在 webViewDidStartLoad 委托方法中成功调用 stringByEvaluatingJavaScriptFromString。
要重现该问题,您可以使用以下代码。
委托实施:
-(void)webViewDidStartLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:@"window.valueHasBeenSet=true"];
}
查看此 HTML:
<html>
<head></head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.valueHasBeenSet)
{
// We enter this branch the first time
document.write('<h3>Everything is OK. Value has been set.</h3>');
}
else
{
// We incorrectly enter this branch on reloads
document.write('<h3>Error. Value has not been set.</h3>');
}
</script>
<a href="javascript:window.location.reload()">Reload</a>
</body>
</html>
此页面在第一个视图(“一切正常。”)上工作,但在所有重新加载时都失败,无论重新加载方法如何。如您所料,这在 shouldStartLoadWithRequest 委托中也不起作用。
我还尝试在webViewDidStartLoad 和performSelector:withObject:afterDelay:0 之后立即执行javascript,但无济于事。
有什么想法吗?
【问题讨论】:
标签: iphone-sdk-3.0 uiwebview iphone