我写了大部分这个剧本,但我知道我错过了一个关键的片段。
我需要调用函数(见下文)......
function InternalLink() {
Page_ShowPopOnExit = false;
}
...在if / else语句中以某种方式(见下面的代码)来检测点击的是内部链接而不是页面关闭/外部链接。
function LinkConvert() {
var href;
var anchors = document.getElementsByTagName('a');
for(var y=0; y<anchors.length; y++)
{
href = anchors[y].href.toLowerCase();
if (!(href.indexOf("http://")!=-1 && href.indexOf(MySiteDomain)==-1))
{
anchors[y].clickhandler=InternalLink()
XBrowserAddHandlerPops(anchors[y],"click","clickhandler");
}
}
}
(最新)总代码如下,Ty帮助我完成代码(或修复它:)
function exitwindow() {
var Page_ShowPopOnExit=true;
var MySiteDomain='www.example.com';
var url = '/exit.html';
var win = 'toolbar=0,directories=0,menubar=0,scrollbars=0,resizable=0,width=250,height=300';
if (Page_ShowPopOnExit==true){
open(url,'WindowName',win);
} else (Page_ShowPopOnExit==false)
{alert('Internal Link')}
}
function InternalLink() {
Page_ShowPopOnExit = false;
}
function LinkConvert() {
var href;
var anchors = document.getElementsByTagName('a');
for(var y=0; y<anchors.length; y++)
{
href = anchors[y].href.toLowerCase();
if (!(href.indexOf("http://")!=-1 && href.indexOf(MySiteDomain)==-1))
{
anchors[y].clickhandler=InternalLink()
XBrowserAddHandlerPops(anchors[y],"click","clickhandler");
}
}
}
function XBrowserAddHandlerPops(target,eventName,handlerName) {
if ( target.addEventListener ) {
target.addEventListener(eventName, function(e){target[handlerName](e);}, false);
} else if ( target.attachEvent ) {
target.attachEvent("on" + eventName, function(e){target[handlerName](e);});
} else {
var originalHandler = target["on" + eventName];
if ( originalHandler ) {
target["on" + eventName] = function(e){originalHandler(e);target[handlerName](e);};
} else {
target["on" + eventName] = target[handlerName];
}
}
}
答案 0 :(得分:0)
当访问者点击链接到不同域的链接时,您希望通过代码进行猜测。
如果链接URL看起来像内部链接(没有“http://”或域存在),那么您的代码目前通过将onclick处理程序附加到所有链接来实现此目的。然后它会将布尔值Page_ShowPopOnExit
设置为false,这样可以防止弹出钩子在调用时生成弹出窗口(exitwindow
- 在示例代码中没有调用它)
我认为有一种更简单的方法。即只需附加一个onclick处理程序,将弹出一个不是内部链接的每个链接:
function createPopup() {
var url = '/exitexample.html';
var win ='toolbar=0,directories=0,menubar=0,scrollbars=0,resizable=0,width=250,height=300';
open(url,'WindowName',win);
}
var anchors = document.getElementsByTagName('a');
for(var y=0; y<anchors.length; y++) {
href = anchors[y].href.toLowerCase();
if (href.indexOf("http://") !== -1 && href.indexOf(MySiteDomain) !==-1) {
anchors[y].onclick = createPopup; // you might want to replace this with attachEventListener etc.
}
}