我可以在通过ASP.NET打开一个新的IE窗口后,使用Internet Explorer的“查找”在网页中查找一个数字(并转到第一个结果)?ASP.NET打开新的IE窗口并以编程方式运行“查找”?
编辑:也许我要澄清,我在一个网站,是不是我的,我不能嵌入,并在其上运行的JavaScript打开一个网页...
这甚至可能吗?
感谢 Roey
我可以在通过ASP.NET打开一个新的IE窗口后,使用Internet Explorer的“查找”在网页中查找一个数字(并转到第一个结果)?ASP.NET打开新的IE窗口并以编程方式运行“查找”?
编辑:也许我要澄清,我在一个网站,是不是我的,我不能嵌入,并在其上运行的JavaScript打开一个网页...
这甚至可能吗?
感谢 Roey
不ASP或IE特有的:大多数网站只使用高亮显示,您也可以做使用jQuery,喜欢跟Text Highlight plugin客户端。
然后你会错过“下一步”和“上一步”按钮,但我想一个人解决了这个问题已经以及...
编辑:正如你澄清,内容是从其他网站:除非您在自己的URL中显示内容(可能不会被其他网站的所有者接受),否则无法完成此操作。例如,点击确实会突出显示的Google缓存结果(其内容由Google网址提供),同时点击正常搜索结果(由网站的网络服务器提供)不会执行此操作。这就是为什么Google提供了一个允许突出显示的工具栏,这就是为什么人们使用bookmarklets。
你可以做的一件事是让你的服务器请求页面本身,然后像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());
现在你有一个代表响应流,就好像你自己发送的响应与Telnet客户端或web浏览器的List。你可以随心所欲地做到这一点 - 例如,注入jQuery代码为你做突出显示。
就我个人而言,我会手动扫描此列表以获取我想要的信息并将其包装在一个范围中以突出显示它。我也会尝试在页面上放置一个页面定位点,并将请求的目标重定向到该定位点,从而强制浏览器向下滚动到突出显示的文本。同样,jQuery或其他Javascript框架也可以为您完成。
最后,您需要找到一种方法将此流呈现给客户端。如果你可以在新窗口中做到这一点,我不能确定我的头脑。您可能需要手动构建一个iFrame模式弹出类型的东西,或使用HttpHandler。
即使您有JavaScript访问权限,我也不认为您可以在浏览器中访问Ctrl-F功能。现在,你甚至没有JS,我想答案是没有可以做...
不,没有JS访问机制来做到这一点。曾经有一个专有的IE API用于这个名为NavigateAndFind(),但它在IE7或IE6SP2中被删除。
http://msdn.microsoft.com/en-us/library/ms536641(VS.85).aspx
我怀疑这是可能的,但首先我想这是对一些内联网在一些管理严格的办公环境(所以你知道作为一个事实,人们使用的是IE),或用于个人使用? – Arjan 2009-07-12 12:46:48