如何单击 href 链接但阻止链接页面显示

Posted

技术标签:

【中文标题】如何单击 href 链接但阻止链接页面显示【英文标题】:How can you click an href link but block the linked page from displaying 【发布时间】:2022-01-22 14:18:41 【问题描述】:

标题中很难概括我的问题。

我重写了一个广泛使用 javascript 的个人网页。我正在简化事情(或者我希望如此)。

我使用具有 REST 接口的家庭自动化服务器。我可以发送诸如“http://192.168.0.111/rest/nodes/7%2032%20CD%201/cmd/DON”之类的命令来打开灯。我正在使用 href 标记将链接放在我的简化网页上。问题是它打开了rest界面页面并显示了XML结果。我想避免显示该页面。即,当您单击链接时,它会“转到”链接但不会更改页面。

这似乎应该/不可能,但我学会了不要低估社区。​​p>

有什么想法吗?

【问题讨论】:

使用ajax发送请求 【参考方案1】:

如果您的浏览器足够现代,您可以使用fetch 函数:

document.querySelector(lightSelector).addEventListener('click', e => 
 e.preventDefault(); // prevent the REST page from opening
 fetch(lightURL).then // put promises here
)

变量 lightSelector 和 lightURL 应该在某个地方定义。

代码会监听链接上的点击,当点击时,我们会阻止 REST 页面打开(您的意图),然后我们使用 fetch 向您的轻量级 URL 发送请求。您可以使用then 添加一些承诺来处理响应(例如打印“light on”或“light off”),但这是另一回事。

如果您将“链接”设置为按钮,则可以去掉阻止 REST 页面打开的部分 e.preventDefault();

【讨论】:

谢谢。您能否以简单的 html 页面格式向我展示此内容,因为我的技能非常有限。给定控制器的 URL 192.168.0.123 和设备地址“20 7F A4 1”,该命令将类似于 192.168.0.123/rest/cmd/20 7F A4 1/DON 来打开它。如果我想要一个简单的打开灯链接,网页会是什么样子?跨度> @Mark 你好,你不需要以任何方式调整 HTML 来完成这项工作。您只需添加 JavaScript 代码。

以上是关于如何单击 href 链接但阻止链接页面显示的主要内容,如果未能解决你的问题,请参考以下文章

滚动页面单击按钮以链接到同一页面

滚动页面单击按钮以链接到同一页面

当您在一个站点上有多个页面并且单击链接只是向下滚动时,如何调用页面?

在android webview应用程序的页面上单击链接时如何防止显示加载微调器?

AJAX调用会阻止导航到其他页面,直到完成为止

单击叠加图像以启动视频后,阻止页面移至顶部