【发布时间】:2011-11-27 17:15:52
【问题描述】:
我需要一些关于 iPhone 上 JavaScript 的帮助 UIWebView;
我有如下 HTML:
<html>
<head>
<title>Example</title>
</head>
<body>
<span>this example for selection <b>from</b> UIWebView</span>
</body>
</html>
我要进行选择,并在 HTML 中为所选文本添加带有颜色的<span> 标记,以便像电子书阅读器一样写笔记。
这是我获取所选文本的 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];
我的问题是这样的:
如果我从WebView 中选择“示例”(查看 HTML 文本)文本,它可以工作,因为它不包含任何标签。
但是,如果我从WebView 中选择“selection from”(查看HTML 文本)文本,它就不起作用,因为它开始<b> 的标签,而</b> 不在我的选择范围内,那么我不能在<b> 和</b> 之间添加一个新标签。
我该如何解决这个问题?
【问题讨论】:
-
对不起,我发现这个问题真的很难理解。我建议重写它,这样更清楚。
标签: javascript iphone html uiwebview selection