JavaScript 不能在 WebKit 中的数据 URI 页面上运行吗?

问题描述 投票:0回答:1

在 Android 上的 Chrome 上,

data
URI 页面上的 JavaScript 包含以下 HTML

<html>
<head>
</head>
<body>
<a href="javascript:alert('Hi.');">Say hi</a>
</body>
</html>

将导致一个对话框显示“嗨”。当我点击“打个招呼”时显示。然而,在 iOS 上的 Chrome 中,什么也没有发生。 JavaScript 无法在 iOS 上 WebKit 浏览器中的

data
URI 页面上运行吗?

javascript ios google-chrome webkit data-uri
1个回答
0
投票

JavaScript、WebKit 和数据 URI

JavaScript
适用于
WebKit
上的
iOS
浏览器,与
Safari
类似,但与其他平台相比,在行为和安全性方面存在差异。
WebKit
上的
iOS
对于执行
JavaScript
有更严格的规则,特别是在非标准情况下,例如在
JavaScript
中使用
data URIs
。例如,由于安全和兼容性原因,在锚标记中使用
javascript: URI
可能无法在
iOS
上按预期工作。这些差异的存在是为了增强安全性、性能和用户体验。

要绕过此限制,您可以使用传统技术来运行

JavaScript
。例如,您可以使用
event listeners

HTML 和 JS 逻辑:

<html>
<head>
</head>
<body>
<a href="#" id="sayHi">Say hi</a>

<script>
document.getElementById('sayHi').addEventListener('click', function(event) {
    event.preventDefault();
    alert('Hi.');
});
</script>
</body>
</html>

在给定的场景中,我们正在为超链接设置

click event
。为了确保单击时它的行为不像常规链接,我们使用
event.preventDefault()
方法。之后,我们使用
alert('Hello World');
显示警报。这种方法经常使用,并且在各种平台上都能很好地工作。

如有任何疑问,请随时询问!

© www.soinside.com 2019 - 2024. All rights reserved.