我需要有关 iPhone 上的 JavaScript 的一些帮助UIWebView
;
我有如下 HTML:
<html>
<head>
<title>Example</title>
</head>
<body>
<span>this example for selection <b>from</b> UIWebView</span>
</body>
</html>
我想进行选择,然后添加<span>
在 HTML 中为所选文本添加颜色标记,就像电子书阅读器一样编写注释。
这是我的 JavaScript 代码,用于获取所选文本:
NSString *SelectedString = [NSString stringWithFormat:@"function getSelText()"
"{"
"var txt = '';"
" if (window.getSelection)"
"{"
"txt = window.getSelection();"
" }"
"else if (document.getSelection)"
"{"
"txt = document.getSelection();"
"}"
"else if (document.selection)"
"{"
"txt = document.selection.createRange().text;"
"}"
"else return;"
"alert(txt);"
"}getSelText();"];
[webView stringByEvaluatingJavaScriptFromString:SelectedString];
这效果很好,并返回我所选的文本。
还有这个用于添加新标签的 JS 代码:
NSString *AddSpanTag = [NSString stringWithFormat:@"function selHTML() {"
"if (window.ActiveXObject) {"
"var c = document.selection.createRange();"
"return c.htmlText;"
"}"
"var nNd = document.createElement(\"span\");"
"var divIdName = \'myelementid\';"
"var ColorAttr = \"background-color: #ffffcc\";"
"nNd.setAttribute(\'id\',divIdName);"
"nNd.setAttribute(\'style\',ColorAttr);"
"var w = getSelection().getRangeAt(0);"
"w.surroundContents(nNd);"
"return nNd.innerHTML;"
"}selHTML();"];
[webView stringByEvaluatingJavaScriptFromString:AddSpanTag];
我的问题是这样的:
如果我选择“示例”(查看 HTML 文本)文本WebView
,它有效,因为它不包含任何标签。
但是如果我选择“选择”(查看 HTML 文本)文本WebView
,它不起作用,因为它开始标签<b>
, and </b>
不在我的选择范围内,那么我无法在之间添加新标签<b>
and </b>
.
我怎么解决这个问题?
由于这是一个UIWebView
,这是 Mobile Safari,您可能会丢失很多用于获取选择的分支。我建议使用document.execCommand()
使用“HiliteColor”命令,该命令内置于浏览器中,即使跨元素边界也适用于整个选择:
var sel = window.getSelection();
if (!sel.isCollapsed) {
var selRange = sel.getRangeAt(0);
document.designMode = "on";
sel.removeAllRanges();
sel.addRange(selRange);
document.execCommand("HiliteColor", false, "#ffffcc");
sel.removeAllRanges();
document.designMode = "off";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)