window.open仅将=放在我的首页的参数列表中

时间:2019-07-03 18:47:15

标签: javascript

在调用window.open之前,我正在调用javascript将参数附加到我的URL。该代码在除我的主页以外的所有页面上均能完美运行。在主页上,“ =”放在参数列表中。有什么想法吗?

在除主页以外的所有页面上,窗口将按预期方式打开: https://dev.mysite.com/?m_=myModal0

在主页上,窗口打开如下: https://dev.mysite.com/?m_myModal0

<a href="<?php echo $my_link; ?>" target="_self" onclick="OpenModal('myModal<?php echo $count;?>')" class="btn get_code" id="get_code<?php echo $count; ?>"><?php esc_html_e('get code', 'comre');?></a> 

<script>
function OpenModal(modalid){
    var win;    
    //event.preventDefault();

    if(window.location.href.indexOf("m_") > -1) {
        var reexp = new RegExp(/m_=(.*?)$/);
        var url = window.location.toString();
        var newUrl = url.replace(reexp, ("m_=" + modalid));
        win = window.open(newUrl, '_blank');
    } 
    else {
        if(window.location.href.indexOf("?") > -1) {
           win = window.open(document.URL+"&m_="+modalid, '_blank');
       }
       else {
           win = window.open(document.URL+"?m_="+modalid, '_blank');
       }
    } 

    win.focus();
    return true;
}
</script>

控制台中没有显示错误。

1 个答案:

答案 0 :(得分:0)

对您的用户友好:不要通过坚持var filename = "page_" + type + ".htm" $( "#C2" ).hide() $( "#bkmk00" ).load(filename, function(){ $( "#bkmk00" ).fadeIn(500); }); 来强迫他们在您的网站上允许弹出窗口。而是,创建一个普通的导航链接,然后单击它。所以代替这个:

window.open

使用此:

var url = window.location.toString();
...
window.open(url);

还有更多代码吗?当然,但这是一次性函数声明,因此不值得关注:call。但这也意味着打开一个URL,就像浏览器一样,当人们在页面之间导航时,浏览器会执行通常的操作。