看到後 http://blog.techno-barje.fr/post/2010/10/06/UIWebView-secrets-part3-How-to-properly-call-ObjectiveC-from-Javascript/
和How to call Objective-C from Javascript?
您可以使用腳本
function sendURLToUIWebView(url) {
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", url);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
}
您的網址發送一些字符串到您的UIWebView應該有具體的舍姆F.E. myappcomand://
,您可以用UIWebViewDelegate
方法處理它(設置一些對象的UIWebView的委託,FE一些的UIViewController)
- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
BOOL shouldLoad = YES;
if ([request.URL.scheme isEqualToString:@"myappcomand"]) {
shouldLoad = NO;
// parse url string "request.URL" and extract your parameters to store them
}
return shouldLoad;
}
JavaScript函數
function sendURLToUIWebView(url) {
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", url);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
}
function getRangeForSelectedText() {
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var url = "myappcomand://" + "range=" + range; // you should convert range to string
sendURLToUIWebView(url);
}
更新:
範圍到字符串
range.toString().replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '')
或只是var rangeText = window.getSelection().toString();
看到Strange behaviour with range.toString()
但我的問題是如何我可以將範圍對象轉換爲一個字符串。範圍對象由開始容器,結束容器,起始偏移量,結束偏移量組成。我可以將起始偏移量和結束偏移量轉換爲字符串,因爲它們是整數。但是開始容器和結束容器是節點對象。 –
@PriyankaV當你使用range.toString()時,你有什麼streeng? – BergP
range.toString()。replace(/ \ s +/g,'').replace(/^\ s + | \ s + $/g,'')這是給出選定的文本。但我不需要選定的文本 –