【问题标题】:Can I instruct browser to run a custom javascript function before even starting a web request?我可以在启动 Web 请求之前指示浏览器运行自定义 javascript 函数吗?
【发布时间】:2013-01-11 13:12:11
【问题描述】:

我想要这样的东西:第一次加载我的网页时,我将函数 fn 存储在浏览器的本地存储中。从那时起,每当要向我的域发出请求时,fn 都会在发出该请求之前执行(但当然是在确定要向我的域发出请求之后)

有可能吗?

【问题讨论】:

  • 为什么您需要在页面请求开始之前运行 javascript 代码?这不是任何网络范例的一部分。
  • 高级想法是这样的:如果浏览器存储中已经存在所需的 HTML,我想完全传递发出请求。
  • 不,这是不可能的。然而,您可以使用缓存机制来实现您想要实现的目标。例如,使用manifest file

标签: javascript browser local-storage


【解决方案1】:

我认为您正在寻找的是应用程序缓存。应用程序缓存允许您指定缓存清单以告诉支持的浏览器您站点上的某些文件应该被缓存,并在用户第二次访问您的站点时自动加载表单缓存。浏览器将在站点加载后检查更新,因此即使您更新清单文件(这是告诉浏览器某个缓存文件已更改的唯一方法),浏览器也会在后台下载更新的文件。然后您可以选择自动重新加载页面,或者只让用户使用旧缓存,直到他们下次加载缓存页面。

http://www.html5rocks.com/en/tutorials/appcache/beginner/

这是在单个请求发送到您的站点之前加载 html/images/js 或执行 js 的唯一方法。这也意味着如果您正确设计您的网站/应用程序,即使用户完全离线也可以使用它。

【讨论】:

    【解决方案2】:

    我希望不会,因为这些功能相当于地雷。想象一下,我知道银行合并将要发生,所以我购买了合并后公司可能拥有的一堆域,并做一些事情来吸引流量去那里,这些功能将其中一个功能存储在浏览器缓存中。然后,合并后的银行追随我抢注域名,我毫不费力地交出了域名。即使我不拥有该域,我嵌入的脚本现在也会针对对银行的任何请求运行,因此只有当用户实际导航到银行网站时,它才能为我的网络钓鱼站点启动弹出窗口。

    【讨论】:

      【解决方案3】:

      您不能使用 Javascript 的任何半永久性方式(本地存储/cookies)来存储函数。您可以存储一个函数名称,然后您将使用它来确定要执行的函数。如果您在域的每个页面上都包含 javascript 文件,那么这是可能的。

      这可以通过设置 cookie 或在本地存储中存储值来轻松完成。如果该值不存在,则为第一次。

      【讨论】:

        猜你喜欢
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 2018-01-18
        • 2014-11-13
        • 1970-01-01
        相关资源
        最近更新 更多