我不能使用target = _blank因为我的动作是动态构建的,例如:当用户点击链接时,我用.click(函数(事件)捕获它,而不是调用ajax api然后在回调中我把网址放在哪里。
现在出现问题:
window.location = mylink; //工作 - 好的! window.open(myLink的); //不工作 - 不行!
为什么?
我需要打开一个新窗口,因为mylink是一个指向pdf文件的链接,当使用window.location时,正确查看了pdf文件,但是......没有浏览器的任何后退导航控件。这是一个移动webapp,我使用jquery mobile。
在互联网上太糟糕了很多人都有pdf查看器问题,但没有人解决它,所以我想出去打开一个新窗口并在那里传递pdf链接。这样我的父窗口就会保持不变。否则,你必须杀死当前会话并再次打开safari ..
答案 0 :(得分:2)
将target =“_ blank”添加到您的链接中。然后,在click事件上调用此脚本。 它将在新窗口中打开您的pdf。
$( "a" ).live( "click", function(event) {
var $this = $(this),
//get href, remove same-domain protocol and host
href = $this.attr( "href" ).replace( location.protocol + "//" + location.host, ""),
//if target attr is specified, it's external, and we mimic _blank... for now
target = $this.is( "[target]" ),
//if it still starts with a protocol, it's external, or could be :mailto, etc
external = target || /^(:?\w+:)/.test( href ) || $this.is( "[rel=external]" ),
target = $this.is( "[target]" );
if( href === '#' ){
//for links created purely for interaction - ignore
return false;
}
var testtarget = $this.attr( "target" );
if (testtarget == '_blank') {
alert('Leaving web app');
return true;
}
$activeClickedLink = $this.closest( ".ui-btn" ).addClass( $.mobile.activeBtnClass );
if( external || !$.mobile.ajaxLinksEnabled ){
//remove active link class if external
removeActiveLinkClass(true);
//deliberately redirect, in case click was triggered
if( target ){
window.open(href);
//return true;
}
else{
location.href = href;
}
}
else {
//use ajax
var transition = $this.data( "transition" ),
back = $this.data( "back" ),
changeHashOnSuccess = !$this.is( "[data-rel="+ $.mobile.nonHistorySelectors +"]" );
nextPageRole = $this.attr( "data-rel" );
//if it's a relative href, prefix href with base url
if( href.indexOf('/') && href.indexOf('#') !== 0 ){
href = getBaseURL() + href;
}
href.replace(/^#/,'');
changePage(href, transition, back, changeHashOnSuccess);
}
event.preventDefault();
});
答案 1 :(得分:0)
如果要在jQuery Mobile中打开对话框/弹出窗口,则必须使用属性data-rel="dialog"
,href
属性必须指向要加载的URL
<a href="yourpage.html" data-role="button" data-rel="dialog">Open dialog</a>