我正在制作一个应用程序,我希望在移动设备上独立显示。
我用过
// Mobile Safari in standalone mode
if(("standalone" in window.navigator) && window.navigator.standalone){
// If you want to prevent remote links in standalone web apps opening Mobile Safari, change 'remotes' to true
var noddy, remotes = false;
document.addEventListener('click', function(event) {
noddy = event.target;
// Bubble up until we hit link or top HTML element. Warning: BODY element is not compulsory so better to stop on HTML
while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
noddy = noddy.parentNode;
}
if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes))
{
event.preventDefault();
document.location.href = noddy.href;
}
},false);
}
但是我也在我的应用程序中使用模态。以前的JS将破坏模态的代码。
JS莫代尔:
$ ->
modal_holder_selector = '#modal-holder'
modal_selector = '.modal'
$(document).on 'click', 'a[data-modal]', ->
location = $(this).attr('href')
#Load modal dialog from server
$.get location, (data)->
$(modal_holder_selector).html(data).
find(modal_selector).modal()
false
$(document).on 'ajax:success',
'form[data-modal]', (event, data, status, xhr)->
url = xhr.getResponseHeader('Location')
if url
# Redirect to url
window.location = url
else
# Remove old modal backdrop
$('.modal-backdrop').remove()
# Replace old modal with new one
$(modal_holder_selector).html(data).
find(modal_selector).modal()
false
有人可以帮我把这两个结合起来吗?
答案 0 :(得分:1)
所以问题是你直接被重定向到页面,而不是在模态中打开那个页面。
由于您当前的“独立”代码看起来非常自定义,我假设您可以根据自己的需要进行增强。如果情况并非如此,请告诉我。
尝试更改触发重定向的条件,同时检查data-modal
属性:
if('href' in noddy && !'data-modal' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes))
{
event.preventDefault();
document.location.href = noddy.href;
}
由于条件变得很长(并且可能会发生变化),你可以将它抽象出来(shouldRedirect()
或isModal()
或者其他东西),但我会把它留给你。