【问题标题】:Triggering multiple individual JavaScript functions via URL without a page refresh通过 URL 触发多个单独的 JavaScript 函数而无需刷新页面
【发布时间】:2014-10-08 16:44:01
【问题描述】:

我正在使用 NFC(近场通信)构建一个简单的 web 应用程序,其中涉及使用我的网站的 URL + 将触发特定 JavaScript 函数的哈希编程的某些标签。

例如,“www.website.com/index.html#hide/one”将隐藏网页上标记为“one”的元素。很简单,对吧?我以为会的。

我后来了解到,当您点击 NFC 标签时,它会在新网页/标签中打开 URL。不过,我认为如果我的网页检查是否还有其他打开的页面并关闭它们,则可以避免这种情况。

如果有更好的方法(通过该网页的 URL 触发网页上的 JavaScript 函数),请告诉我。重要的是要注意总共有 8 个标签(元素),并且它们都必须被触发才能结束游戏/应用程序,这要求所有这些都在同一页面上完成,最好不要刷新(尽管我可能可以使用 localstorage 安装一些东西,以便刷新)。

提前致谢,我只是不确定我将如何在此处进行操作。

-米切尔

编辑 - 我应该提到我已经在使用backbone.js 来满足我的路由需求。非常适合我目前的情况,

【问题讨论】:

    标签: javascript jquery html function hash


    【解决方案1】:

    您需要的是一个哈希标签路由库。 http://projects.jga.me/routie/

    这将在您的应用页面加载并读取哈希时运行,从而转移您的代码逻辑以根据哈希标签执行某些操作,从而在代码逻辑中将您的项目从页面上删除。不需要很多页面。

    但是!

    如果设备上的 url 启动器在每次检测到项目时都会启动新窗口,这是一个问题,因为您无法关闭这些窗口,只能从窗口本身关闭。

    解决方案

    应用程序有一个游戏的主窗口,每个项目都存储在本地存储中,您可以使用本地存储事件系统来检测另一个页面是否更改了项目,并实时更新 UI。

       addEvent(window, 'storage', function (event) {
           if (event.key == 'item1') {
              item1.innerHTML = event.newValue;
       }
       });
    

    当 NFC 启动新窗口时,显示用户反馈,说明他们已完成游戏任务,然后使用超时关闭它。

    该窗口下方将是显示更新的主页面窗口。

    如果做得好,它会很好地工作。当任务完成时,您还可以在弹出窗口上添加一个漂亮的 x 关闭按钮。

    【讨论】:

    • 这听起来是个不错的解决方案。是否可以使用 JavaScript 或类似的东西从一个网页向另一个网页发送请求?我在想,如果 NFC 到达其他页面(“www.website.com/ex/one”),它可能能够向主页发送请求,从而触发 JavaScript 功能。但这可能没有意义。在这种情况下,我将使用您建议的很棒的解决方案:)
    • 哦,我应该在我的主要帖子中提到。我已经在使用backbone.js 来管理我的路线。它非常适合我目前的需求。
    • 是的。 localstorage 有一个事件系统,如果同一域上的一个页面更改了一个键,它会在另一个窗口上触发一个事件。我已经更新了我的答案。这为您提供了一个窗口消息事件系统。 html5demos.com/storage-events
    • 我认为这个解决方案会很好用。如果它是用户扫描物品或通过 NFC 查找积分的游戏,它会正常工作。此外,使用本地存储将为游戏提供备份并改进游戏选项。
    • 实际上,这是一个非常棒的演示。这似乎是最好的解决方案。感谢您的精彩回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    相关资源
    最近更新 更多