gpt4 book ai didi

javascript - 防止独立 Web 应用程序中的链接使用 Rails 上的模式打开 Mobile Safari

转载 作者:行者123 更新时间:2023-11-27 23:01:53 24 4
gpt4 key购买 nike

我正在制作一个应用程序,我希望在移动设备上有独立的外观。

我用过

 // 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

有人可以帮我将这两者结合起来吗?

最佳答案

所以问题是您会直接重定向到该页面,而不是在模式内打开该页面。

由于您当前的“独立”代码看起来非常自定义,因此我假设您可以对其进行增强以满足您的需求。如果情况并非如此,请告诉我。

尝试更改触发重定向的条件,同时检查 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() 或其他东西),但我'这由你决定。

关于javascript - 防止独立 Web 应用程序中的链接使用 Rails 上的模式打开 Mobile Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36999963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com