在 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
适用于 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');
显示警报。这种方法经常使用,并且在各种平台上都能很好地工作。
如有任何疑问,请随时询问!