UIWebView 无法注入 HTML
Posted
技术标签:
【中文标题】UIWebView 无法注入 HTML【英文标题】:UIWebView can't inject HTML 【发布时间】:2015-06-01 10:51:39 【问题描述】:我正在尝试将一些 html 放入 UIWebView 的 div 中。虽然代码看起来正确,但它不会工作。
这行得通:
[webView stringByEvaluatingjavascriptFromString:[NSString stringWithFormat:@"document.getElementById(\"testdiv\").innerHTML = \"Test text here\""]];
这不是:
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"testdiv\").innerHTML = \"%@\"", htmlString]];
在第二种情况下,'htmlString' 只是块引用中的一些 HTML。
基本上,当我使用 HTML 时,它会失败。我首先认为 HTML 可能无效,但我认为它仍会尝试显示它。
由于操作而得到的“错误”只是一个空(非零)字符串。
有什么想法吗?
编辑:
下面是一个不显示的 HTML 示例:
<div style="padding-bottom: 20px;"></div><div><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content=
"text/html charset=us-ascii" />
<title></title>
</head>
<body style=
"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"
class="">
TestTESTEST<br class="" />
<div apple-content-edited="true" class="">
<div style=
"color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"
class="">
<div class="" style="font-size: 10px;"><br class="" /></div>
</div>
</div>
</body>
</html>
</div>
htmlString 变量就是块引用标签中的那个 HTML。
编辑2:
如果我将 HTML 直接放入文档中,然后加载它就可以了。只有当我尝试通过 JS 插入时才会出现问题。
【问题讨论】:
我对此只有一个想法:您提供的 Html 无效。所以删除所有换行符并检查未关闭的标签。 可能是您的数据在转义字符之间终止?,您可以使用NSLog
进行检查吗?
也在浏览器的调试控制台中检查您的数据
无效的 HTML 会导致什么都不显示吗? @iphonic I NSLog stringByEval 的结果并返回一个空字符串。我在 webViewFailed 委托中也一无所获。
您能提供无效的htmlString
示例吗?
【参考方案1】:
临时解决方案:
由于我要插入的 HTML 文档只是一个模板,我将其复制到代码中,然后构建整个字符串并将其加载到 UIWebView:
例如NSString *s = @"<html><body><div1></div1><div2>%@</div2></body></html>", contentToInsert.
理想情况下,我仍然希望让它工作,就好像我可以通过 JS 插入 HTML 我可以使用多个 HTML 模板并根据需要将内容放入其中。因此,如果您能找到解决方案,请告诉我。
【讨论】:
以上是关于UIWebView 无法注入 HTML的主要内容,如果未能解决你的问题,请参考以下文章
使用 JavaScript 的 UIWebView CSS 注入
在 UIWebview 的 didStartLoad 方法中注入 JS
UIWebView 与 WebView Javascript 注入
如何在 UIWebView 加载的 iframe 中注入 javascript - iOS