Tom*_*ift 14 iphone uiwebview ipad ios ios5
也许这类似于这个问题,没有回应: loadHTMLString不能使用iOS5?
我有一个UIWebView,我使用loadHTMLString填充:baseURL:.HTML小而简单,它引用了一个css样式表和一个javascript脚本,它们通过baseURL:加载,它被设置为app的bundle内的一个目录.
// load the html
NSString* filePath = [NSString stringWithFormat: @"%@/html", [[NSBundle mainBundle] resourcePath ] ];
[_pCurrentWebView loadHTMLString: html baseURL: [NSURL fileURLWithPath: filePath isDirectory: YES ] ];
Run Code Online (Sandbox Code Playgroud)
这在过去一直很有效,但在iOS5中已经破产了.在iOS5中,UIWebView中不显示任何内容.webview确实提供了所有预期的事件 - 例如,shouldLoadRequest,didStartLoad,didFinishLoad等.
html有一个脚本标记,如下所示:
<script type="text/javascript" src="./myscript.js" />
Run Code Online (Sandbox Code Playgroud)
如果我删除脚本标记,那么页面加载并在iOS5中呈现正常.我可以说,加载并应用了与脚本.js文件引用方式相同的css文件.
如果我保留脚本标记但使myscript.js文件完全为空,则仍然无法加载.
对我来说,这似乎是某种跨站点脚本问题 - 因为WebView认为它应该禁止加载脚本(事实上,不允许渲染页面?)
不知道从哪里开始.想法?
UPDATE
这种感觉越来越像跨站点脚本问题.如果我删除它的标签,虽然没有脚本.我的所有图像都是从baseURL加载的,我的样式表也是如此.也就是说,我们知道baseURL正在运行.
如果我用我的脚本文件的实际内容替换标签然后它工作,所以问题不是脚本本身.
仍在寻找确认和其他想法来规避.我不方便将脚本本身修补到html中,但这是我迄今为止最好的解决方案.或者,我可以将html写入文件系统并通过loadRequest加载,但同样,不是我的第一选择.
更新2
感谢@djromero我有一个解决方案.我的文档是一个XHTML文档,因此使用了一个自动关闭的脚本标记(没有内容,只是属性.)但loadHTMLString:baseURL:显然假设一个MIMEType text/html,UIWebView显然现在更严格地解释 - 并且在text/html文档中你可能没有自我关闭标记.
我的解决方案是切换到loadData:MIMEtype:baseURL:并指定application/xhtml+xml为mime类型.我可以使用我的NSString轻松构造NSData dataUsingEncoding:.
djr*_*ero 11
我不是HTML标准专家,但是......你试图关闭<script>标签:
<script type="text/javascript" src="./myscript.js"></script>
它对我有用.
| 归档时间: |
|
| 查看次数: |
11390 次 |
| 最近记录: |