gpt4 book ai didi

iphone-sdk-3.0 - JavaScript 在 UIWebView 的 "Start Load"回调中损坏

转载 作者:行者123 更新时间:2023-12-03 18:47:40 24 4
gpt4 key购买 nike

我试图在页面的 onLoad 事件触发之前执行一些 JS。

但我在 webViewDidStartLoad 委托(delegate)方法中成功调用 stringByEvaluatingJavaScriptFromString 时遇到问题。

要重现该问题,您可以使用以下代码。

委托(delegate)实现:

-(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>

此页面在第一个 View 上有效(“一切正常。”),但在所有重新加载时都会失败,无论重新加载方法如何。正如您可能期望的那样,这在 shouldStartLoadWithRequest 委托(delegate)中也不起作用。

我还尝试在 webViewDidStartLoad 之后立即使用 performSelector:withObject:afterDelay:0 执行 JavaScript,但无济于事。

有什么想法吗?

最佳答案

我设法使用 NSTimer 使其工作

- (void)viewDidLoad {
timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(update) userInfo:nil repeats:YES];
}

-(void)update{
if (Progress.progress <= 1.0) {
[website stringByEvaluatingJavaScriptFromString:@"window.valueHasBeenSet=true"];
}
}

关于iphone-sdk-3.0 - JavaScript 在 UIWebView 的 "Start Load"回调中损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com