2016-03-02 62 views
0

所以我有一个页面,其上有一个链接,打开我建立的自定义模式窗口。我创建了一个onclick方法来处理url更改,以便用户可以保存url并直接打开模态页面(如果他们想要的话)。然后这个想法会在您关闭模式时返回到之前的网址。点击更改网址到以前的网址

HTML

<div onclick="ChangeUrl('Case study 5', 'BASEURL/case_studies=case-study-5');" ></div> 

JS

function ChangeUrl(title, url) { 
    var address = window.location.href; 
    alert(address); 
    if (typeof (history.pushState) != "undefined") { 
     var obj = { Title: title, Url: url }; 
     history.pushState(obj, obj.Title, obj.Url); 
    } else { 
     alert("Your Browser does not support HTML5. Please update your browser 
    to get the full experience of our website."); 
    } 

这个伟大的工程,但问题是我现在用同样的方法的onclick当模式被关闭更改URL。如果我只是从一个主页面完成这项工作,那将会很好,但模态窗口php文件正在从多个页面访问以用作模式,所以我需要一些动态方法将url更改回到上一页的URL。有什么办法来抓取网址,并将其放入我的模态PHP的onclick方法,以便它会返回到前一页?

编辑

在robmarston的意见,我改变了我的HTML模式,包括所谓的modalstate数据属性,该属性设置为打开。

然后我更新了JS,以考虑属性的状态如此。

JS

function ChangeUrl(title, url) { 
if (typeof (history.pushState) != "undefined") { 
    console.log($('.js-post-close').data('modalstate')); 
     if($('.js-post-close').data('modalState') == "open"){ 
      var obj = { Title: "blueleaf", Url: address}; 
      history.pushState(obj, obj.Title, obj.Url); 
     } 
     else { 
      address = window.location.href; 
      var obj = { Title: title, Url: url }; 
      history.pushState(obj, obj.Title, obj.Url); 
     } 
} else { 
    alert("Your Browser does not support HTML5. Please update your browser to get the full experience of our website."); 
} 
    console.log(address); 
} 

这不起作用,甚至以为控制台会记录“打开”每当我点击关闭窗口。我也尝试使用$('。js-post-close')。data('modalState')!= undefined),但结果相同。该页面将不会输入适当的逻辑来将url更改回地址。

+1

一个好的开始是摆脱[内嵌onclick事件](http://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice)并传递点击直接处理javascript – mjr

+0

哦,这是一个好主意!另一个开发者设置它,所以我甚至没有考虑编辑onclick方法 –

+0

实际上,看起来我不能更多地将onclick转换为模态的javascript。我试过了,它没有注册点击。我认为这是因为在.click方法之前,模式html没有加载。 –

回答

1

你可以一个属性总是添加到div指定哪个状态模式是,这样的:

<div data-modalstate="open" onclick="ChangeUrl('Case study 5','BASEURL/case_studies=case-study-5');"></div> 

然后你的函数可以简单地资产modalstate并采取适当的行动。

+0

感谢您的建议,但不幸的是,这并没有奏效。检查我的编辑的细节。 –