Javascript 滚动至UIWebView上的文本

Javascript 滚动至UIWebView上的文本,javascript,ios,cocoa-touch,uiwebview,Javascript,Ios,Cocoa Touch,Uiwebview,我正在用最新的SDK和XCode 4.2开发一个iOS应用程序 我想在UIWebview中搜索文本并滚动到找到的第一个文本 我使用本教程查找文本: 如何滚动到找到的第一个文本?查看教程中用于突出显示的最后一条注释。 使用span进行所有操作后,将此代码块添加到UIWebViewSearch.js中 //旧代码 text=document.createTextNode(value.substr(idx+关键字.length)); element.deleteData(idx,value.leng

我正在用最新的SDK和XCode 4.2开发一个iOS应用程序

我想在UIWebview中搜索文本并滚动到找到的第一个文本

我使用本教程查找文本:


如何滚动到找到的第一个文本?

查看教程中用于突出显示的最后一条注释。

使用span进行所有操作后,将此代码块添加到UIWebViewSearch.js中

//旧代码
text=document.createTextNode(value.substr(idx+关键字.length));
element.deleteData(idx,value.length-idx);
var next=element.nextSibling;
element.parentNode.insertBefore(span,next);
element.parentNode.insertBefore(文本,下一步);
元素=文本;
//代码的新部分
如果(uiWebview\u SearchResultCount==1)
{
var desiredHeight=跨度偏移量-140;
滚动至(0,所需高度);
}
我已经在iPhone Simulator 4.3和5.0上检查了这个解决方案。

让我们一步一步来

突出显示

  • 将在搜索的文本周围添加一个span元素。对于跨度,高光颜色设置为跨度的背景。修改后的HTML字符串将在视图中呈现 您使用的代码包含以下代码段

        var span = document.createElement("span");
            var text = document.createTextNode(value.substr(idx,keyword.length));
                span.appendChild(text);
    
                span.setAttribute("class","uiWebviewHighlight");
                span.style.backgroundColor="black";
                span.style.color="white";
    
    我们需要给跨度添加一个id才能移动。所以添加id如下所示

          var span = document.createElement("span");
            var text = document.createTextNode(value.substr(idx,keyword.length));
                span.appendChild(text);
                span.setAttribute("id","SEARCH WORD");
                span.setAttribute("class","uiWebviewHighlight");
                span.style.backgroundColor="black";
                span.style.color="white";
    
    移动到第一个事件。

    在“Webview didload”中使用以下javascript移动到第一个实例

    [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('SEARCH WORD').scrollIntoView()];
    

    希望这对您有所帮助。

    您可以滚动到通过此修改找到的最上面的文本:

    // >=1
    if (uiWebview_SearchResultCount >= 1) 
    {
        var desiredHeight = span.offsetTop - 140;
        window.scrollTo(0,desiredHeight);
    }
    

    如何滚动到找到的最上面的文本?当uiWebview_SearchResultCount等于1时,这意味着当前范围是突出显示第一次出现的突出显示文本。