gpt4 book ai didi

Cocoa WebKit - 山狮 - loadRequest,loadHTMLString :baseURL: - Load Error

转载 作者:行者123 更新时间:2023-12-03 17:23:19 24 4
gpt4 key购买 nike

OS X 10.8.2。我有一个 webView,我在其中加载 HTML 文档。 (一次一个,响应用户输入。)

我正在使用 WebScriptObjects,以便当用户单击每个 HTML 文档中的菜单元素时,我的代码会收到通知。然后,我可以在内存中创建一些特定于上下文的文档,并通过在 webView 的 mainFrame 上调用 loadHTMLString:baseURL 将其返回给用户。

(旁白:这项工作的第二个原因是修改 HTML 文档,以强制 WebKit 更新页面和链接的 javascript 文件;WebKit 会积极缓存并重用 javascript,并且不会更改链接的 JS反射(reflect)在 WebView 中。为了解决这个问题,我动态重写了 javascript include,为其添加时间戳,以强制 WebKit 重新包含它。非常乏味。有人知道 WebKit 在这方面是否有所改进?)

在 Mountain Lion 之前,代码按照宣传的方式工作,没有错误。

在 Mountain Lion 上运行,发生了两次损坏:

1) 从 NSURL 获取 absoluteString 时会包含片段。即字符串“#someAnchor”被附加到字符串的末尾。通过使用 path 方法进行修复。

2) 后续加载在 webFrame 中不再起作用。具体来说...我可以使用 loadRequest 或 loadHTMLString:baseURL: 将一页(例如 page1.html)加载到 webFrame 中。收到的委托(delegate)回调是:

webView:didStartProvisionalLoadForFrame:

接着是...

webView:didFinishLoadForFrame:

取得巨大成功。

问题:

但是,在单击通常会通过 WebScriptObjects 加载新页面(例如 page2.html)的 HTML 元素后,我得到了这些回调:

webView:didStartProvisionalLoadForFrame:

还有...

webView:didFailProvisionalLoadWithError:forFrame:

错误代码为 999 (NSURLErrorCancelled)

一些研究表明这是一个非常常见的错误,尤其是在 iOS 世界中。通常,你会忽略它。但是,我不能忽略它,因为我的页面加载已损坏。无论初始页面加载和下一个页面加载尝试之间的时间长度如何,都会发生此错误。初始页面已完全加载(如 webView:didFinishLoadForFrame: 回调所示。)

我尝试在加载页面之前调用 stopLoading,但没有效果。

有人可以提供建议吗?谢谢。

最佳答案

解决此问题的方法:我现在不再尝试立即加载下一页,而是使用以下方法将其安排在不久的将来:

performSelector: @selector(doScheduledPageChange)
withObject: nil
afterDelay: 0.01];

这有效。

关于Cocoa WebKit - 山狮 - loadRequest,loadHTMLString :baseURL: - Load Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14515219/

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