Ext.js -在新选项卡中打开所有外部链接
Ext.js - Open all external links in a new tab
也许有人已经遇到过这个问题了。
我需要使所有外部链接在一个新的浏览器选项卡中打开。
解决方案似乎很容易:只是将target="_blank"
添加到外部域的每个链接,但我如何才能以一种很好的方式实现它,因为整个应用程序都是用Ext.js编写的。
使用JavaScript更改目标属性:
var tlinks = document.getElementsByTagName('a');
for (var i=0;i<tlinks.length;i++){
if (tlinks[i].href.indexOf('http://www.yourownurlhere.com') == -1) {
tlinks[i].setAttribute('target', '_blank');
}
}
请记住将"yourownurlhere.com"替换为您的实际url
这个技巧可以通过事件委托来完成。
Ext.select('body').on('click', function (e, el) {
el.target = '_blank';
}, null, {delegate: 'a'});
注意如果你只写
Ext.select('a').on('click', function (e, el) {
el.target = '_blank';
});
则只对现有链接应用处理程序。但是,委托也处理之后创建的元素。如果你希望链接只包含在某个容器中,你可以将'body'更改为与该容器匹配的任何选择器。
你可以这样做:
窗口。打开("你的链接");
我决定回答我自己的问题,因为它可能对任何人都有用。捕获所有链接点击的唯一方法是控制主体点击(正如triclozan在他的回答中所写)。
这段代码将在点击后修改每个链接,并在新窗中打开它:
Ext.getBody().addListener('click', function (event, el) {
var clickTarget = event.target;
if (clickTarget.href && clickTarget.href.indexOf(window.location.origin) === -1) {
clickTarget.target = "_blank";
}
});
希望这段代码将节省几个小时的谷歌搜索的人有同样的问题:)
相关文章:
- Cordova RSS馈送的链接不会在外部浏览器中打开
- 外部链接的Javascript文件赢得't执行,但函数有效
- 动态虚拟目录和外部 JavaScript 链接
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- Cordova包装应用程序内部链接加载在应用程序中,外部链接加载在浏览器中
- 正在创建网页,并希望将外部链接调用为html和css
- 为在新窗口中打开外部链接创建异常
- 链接外部JS文件与自由标记模板
- 如何仅在启用 javascript 时链接外部样式表
- 在 JSFiddle 中链接外部 JSON 数据文件
- HTML-链接外部Javascript文件
- 可以'似乎无法正确链接外部java脚本
- 当链接外部网站时,用Jquery移动加载弹出窗口
- 如何链接外部JS函数与HTML按钮点击
- 如何链接外部javascript文件的按钮点击
- 禁用动态链接外部Javascript文件中的缓存破坏
- 如果我链接外部javascript,它在dom完全加载后运行吗?
- 链接外部JS库并获取XMLHttpRequest错误
- 如何在Adobe Brackets IDE中链接外部javascript文件
- 为什么要用?variable=value来链接外部javascript ?