[WinRT]WebView外部转跳变内部转跳

来源:互联网 发布:centos虚拟系统管理器 编辑:程序博客网 时间:2024/06/05 14:28

这个问题貌似很多人都有问到,所以记录下:Windows Store App中webview的网页带有target=“_blank”的链接,点击之后会跳转到外部IE浏览器,想要在内部跳转,请问怎么解决这个问题?

问题地址: http://social.msdn.microsoft.com/Forums/zh-CN/1014f8e4-f6bc-4059-b367-c2420ca18cf2/win8-webview

做了个例子,大家可以参考下: http://sdrv.ms/14e8G5y

通过参考Matt的博客,想到了可以用注入JavaScript的方式来完成。打开project后如果不点击Button,将会在外部做IE跳转,点击Button后,会在WebView内部做连接跳转。

首先是获取整个页面的html代码,然后对WebView做了Javascript Inject的操作,把下面这段代码注入到Javascript中

stringInsertionScriptString="function disableLink() { ";InsertionScriptString+="var links = document.links, i, length;";InsertionScriptString+="for (i = 0, length = links.length; i < length; i++) {";InsertionScriptString+="links[i].target == '_blank' && links[i].removeAttribute('target');}}";

 

同时,通过下面的代码把功能激活

webview.InvokeScript("disableLink",null);

原理是把target = “_blank” 删除。