所以我有一个页面,其上有一个链接,打开我建立的自定义模式窗口。我创建了一个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更改回地址。
一个好的开始是摆脱[内嵌onclick事件](http://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice)并传递点击直接处理javascript – mjr
哦,这是一个好主意!另一个开发者设置它,所以我甚至没有考虑编辑onclick方法 –
实际上,看起来我不能更多地将onclick转换为模态的javascript。我试过了,它没有注册点击。我认为这是因为在.click方法之前,模式html没有加载。 –