ASP.NET打开新的IE窗口并以编程方式运行“查找”?

时间:2009-07-12 12:43:33

标签: c# asp.net internet-explorer find

在通过ASP.NET打开新的IE窗口后,我可以使用Internet Explorer的“查找”来查找网页中的数字(并转到第一个结果)吗?

编辑:也许我应该澄清,我在一个不是我的网站上打开一个页面,我无法嵌入并运行javascript ...

这甚至可能吗?

由于 Roey

4 个答案:

答案 0 :(得分:1)

不是ASP或IE特定的:大多数网站仅使用突出显示,您也可以使用jQuery在客户端进行突出显示,就像使用Text Highlight plugin一样。

然后你会错过“下一步”和“上一页”按钮,但我猜有人已经解决了这个问题......

编辑:当您澄清内容来自其他某个网站时:除非您在自己的网址中显示内容(可能不被其他网站的所有者接受),否则无法执行此操作。点击例如Google缓存结果(其内容由Google网址提供),该结果会突出显示,而点击正常搜索结果(从网站的网络服务器提供)则不会这样做。这就是为什么Google提供了一个允许突出显示的工具栏,这就是人们使用bookmarklets的原因。

答案 1 :(得分:0)

您可以做的一件事是让您的服务器请求页面本身,然后使用像Arjan提到的jQuery之类的东西来修改标记。

使用ASP.NET,执行以下操作:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.siteiwanttofindnumberon.com/pagetoopen.html");
        request.Headers = new WebHeaderCollection();
        //set up headers as necessary
        request.Method = "GET";

        //retrieve the response
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        b = new List<byte>();
        while (b.Count < request.ContentLength)
            b.Add((byte)response.GetResponseStream().ReadByte());

现在您有一个表示响应流的List,就像您自己使用telnet客户端或Web浏览器发送了响应一样。您可以随意使用它 - 例如,注入jQuery代码以便为您突出显示。

就个人而言,我会手动扫描此列表以获取我想要的信息,并将其包装在一个范围内以突出显示它。我还会尝试在该点放置一个页内锚点,并将请求的目标重定向到该锚点,从而迫使浏览器向下滚动到突出显示的文本。同样,jQuery或其他Javascript框架也可以为您完成此任务。

最后,您需要找到一种方法将此流呈现给客户端。如果你能在新窗口中做到这一点,我不确定是不是最重要的。您可能需要手动构建iFrame-modal-popup类型的东西,或使用HttpHandler。

答案 2 :(得分:0)

即使您拥有JavaScript访问权限,我也不认为您可以在浏览器中访问Ctrl-F功能。既然你甚至没有JS,我想答案是没有办法......

答案 3 :(得分:0)

不,没有JS可访问的机制来执行此操作。曾经有一个名为NavigateAndFind()的专有IE API,但在IE7或IE6SP2中删除了它。

http://msdn.microsoft.com/en-us/library/ms536641(VS.85).aspx