阻止人们在多个选项卡上加载我的网站

2024-07-03

我希望用户能够浏览我的网站only浏览器中的一个选项卡。如何才能做到这一点?我会使用 javascript 和 cookies 吗?

例如,我有一个网站:www.example.com- 我希望我的客户只能从一个浏览器的一个选项卡访问该网站。如果他们打开另一个选项卡并加载网站(或网站的子页面) - 我想要一个警报“无法打开多个实例”,然后将它们重定向到错误页面。

需要注意的一件事 - 如果用户更改地址www.example.com/action/door/mine.aspx to www.example.com- 这应该可以正常工作,因为用户位于相同的(原始)选项卡中。

任何帮助将不胜感激。提前致谢。


我为此创建了一个简单的解决方案。母版页布局创建选项卡 GUID 并将其存储在选项卡的 sessionStorage 区域中。在存储区域上使用事件侦听器,我将选项卡 GUID 写入站点本地存储区域。然后,侦听器将选项卡 GUID 与写入站点存储的 GUID 进行比较,如果它们不同,则侦听器知道打开了多个选项卡。

因此,如果我有三个选项卡 A、B、C,然后单击选项卡 C 中的某些内容,选项卡 A 和 B 会检测到另一个选项卡已打开并警告用户。我还没有修复它,所以最后一个选项卡使用了获取通知,正在进行中。

这是我在母版页中的 JS,另外在登录页面中我有一个localStorage.Clear清除上一个会话中的最后一个选项卡。

    // multi tab detection
function register_tab_GUID() {
    // detect local storage available
    if (typeof (Storage) !== "undefined") {
        // get (set if not) tab GUID and store in tab session
        if (sessionStorage["tabGUID"] == null) sessionStorage["tabGUID"] = tab_GUID();
        var guid = sessionStorage["tabGUID"];

        // add eventlistener to local storage
        window.addEventListener("storage", storage_Handler, false);

        // set tab GUID in local storage
        localStorage["tabGUID"] = guid;
    }
}

function storage_Handler(e) {
    // if tabGUID does not match then more than one tab and GUID
    if (e.key == 'tabGUID') {
        if (e.oldValue != e.newValue) tab_Warning();
    }
}

function tab_GUID() {
    function s4() {
        return Math.floor((1 + Math.random()) * 0x10000)
          .toString(16)
          .substring(1);
    }
    return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
      s4() + '-' + s4() + s4() + s4();
}

function tab_Warning() {
    alert("Another tab is open!");
}

注:IE9+

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阻止人们在多个选项卡上加载我的网站 的相关文章

  • 为什么异步 XMLHttpRequest 优于同步请求? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Cookie 记住我时的安全性

    我已经在 PHP 中实现了一个登录类 并且想要创建一个记住账号键入功能 这样用户就不必每次访问都登录 我对此进行了一些研究 并准备使用 PHP setcookie 编写它 但后来遇到了这个页面 如何使用 jquery 创建 记住我 并存储
  • 在 C# 中使用匿名类型创建对象文字时出现问题

    我正在尝试构建 JavaScript 对象文字的 C 近似值 以传递给 asp net MVC 中的视图模型 var obj new dynamic new name Id index Id width 40 align left new
  • SharePoint REST 查询 SP.UserProfiles.PeopleManager 特殊字符

    这个问题是我作为起点发现的这个问题的延伸 无需特殊字符即可工作 SharePoint REST 查询 SP UserProfiles PeopleManager https stackoverflow com questions 23340
  • 将命名函数存储在具有不同名称的变量中

    考虑这段代码 var x function z console log called x x will print out called x z ReferenceError 因此 可以在变量中存储命名函数 但我们仍然只能通过变量名来调用该
  • 使用 Google Apps 脚本,如何替换 Google 表格模板中的文本以制作新表格?

    我有一个谷歌表格 https docs google com spreadsheets d 17qtLpnFTiMoE6blELSTQhtxkWa1hjjzI PcaY 3cS1Q edit resourcekey null gid 465
  • 计算随机生成的六边形的6个顶点

    我需要一些帮助来写方程式 我想生成仍然 完美 成比例 的随机大小的六边形 最左边的顶点将位于 0 0 我想考虑与最左边的顶点相关的其他顶点 从左顶点向上这么多 从它右边这么多 从它向下这么多 这不是那么简单的原因是因为我需要它成比例 目前
  • 替换 observableArray 中的项目

    我正在尝试替换某个项目的所有内容observableArray有新内容 var oldLocation ko utils arrayFirst self locations function item return item id valu
  • WPF 应用程序中 WebBrowser 控件的叠加?

    可以给我一个提示 如何在我的 WPF 应用程序的 WebBrowser 控件中显示 覆盖控件 我想将导航图形显示为叠加层 以便用户可以选择一个功能 并且导航控件在选择它后消失 目前对 WPF 还没有真正的经验 我不知道从哪里开始 任何提示或
  • 为 Flutter Web 应用程序添加 id 或 name 属性或其他标识方式?

    在编写 Flutter Web 应用程序时 我尝试利用基于 Selenium 的 Web UI Testing 框架 遗憾的是 我无法通过 id 或 name 属性识别代表某个 flutter 小部件的 HTML 元素 HTML 文档中不存
  • Angular ui - 选项卡控制器执行多次

    当我单击一个选项卡时 相应的控制器会执行 4 次 为什么 E g DetailsPersonController s init函数执行了4次 仅应在加载选项卡视图后执行 HTML 标签
  • 如何在新窗口中获取dom元素?

    JavaScript 中的一个简单任务是打开一个新窗口并在其中写入 但我需要在一个dom元素中写入一个带有ID的div var novoForm window open somform html wFormx width 800 heigh
  • 使用 SVG 的部分边框/描边

    我正在使用 svg d3 创建由 矩形 元素组成的图表 为每个矩形添加部分边框 描边 仅在矩形顶部 的最佳方法是什么 Thanks 我不认为 SVG 支持仅描边矩形或路径的一部分 描边不像 CSS 边框 您还有其他一些选择 所有这些都需要一
  • angularjs表单重置错误

    我正在尝试使用 angularjs 制作一个带有验证的表单 到目前为止我做得很好 但是 当我提交重置按钮时 除了从验证部分收到的错误消息之外 所有字段都会重置 当我重置表单时 如何删除所有字段和错误消息 这就是我按下重置按钮时的情况 这是我
  • AJAX 调用后使用 jquery 刷新 DOM

    我正在做一个新项目http www hotwirerevealed com http www hotwirerevealed com它显示 识别 hotwire com 上的酒店 输入状态和目的地后 我有一个 javascript 函数 它
  • 为什么需要@babel-core

    我是 Babel 和 JS 的新手 我想知道何时以及为何使用 babel core 包而不是 babel cli From 巴贝尔官方文档 https babeljs io docs en Babel是一个工具链 主要用于转换ECMAScr
  • 错误:“访问受限 URI 被拒绝”

    访问受限 URI 被拒绝 代码 1012 中断此错误 xhttp send null function getXML xml file if window XMLHttpRequest var xhttp new XMLHttpReques
  • IOS - React Native - 未处理的 JS 异常:SyntaxError

    每当我创建新的 React Native 项目时 我都会遇到问题 显示红色屏幕 并在 xcode 控制台中收到以下错误消息 嗨 我有同样的问题 在这里找到了解决方案 https github com facebook react nativ
  • WEBP图像回退

    我在互联网上搜索了很多 找不到可以完整教授的正确示例或完整教程 所以请大家给我推荐一些好的例子 我已经在很多网站上尝试过 WEBP 代码 例如与现代化工具一起使用 检查浏览器支持或使用背景图像 有一篇关于 Stucox 的文章 您可以在其中
  • 在 javascript/jquery 中从 JSON 中删除元素

    我在 javascript 中从 JSON 对象删除数据时遇到问题 我正在动态创建此 JSON 并且删除也将动态进行 下面是我的 JSON 和我所处的情况 brands 51 2046 53 67 64 现在 我必须从中删除 53 我正在使

随机推荐

  • nhibernate 会用于像 facebook 这样的大型项目吗? (为了论证)

    对于那些了解 nhibernate 内部工作原理的人来说 您认为像 facebook myspace 这样的大型 Web 应用程序会使用 nhibernate 吗 或者 nhibernate 是否非常适合流量较低的网站 例如公司网站等 即
  • Rails 迁移:尝试将列的类型从字符串更改为整数

    我使用rails生成迁移命令在rails应用程序中创建了一个表 这是迁移文件 class CreateListings lt ActiveRecord Migration def change create table listings d
  • 如何在不使用 -wal 和 -shm 的情况下将 MOC 的内容保存到文件中?

    我想保存a的内容MOC到一个文件myFile ext 一切正常 我的数据已保存到文件中 但我还必须添加辅助文件 myFile ext wal myFile ext shm 这些文件对于我的目的来说是必要的吗 保存MOC到一个文件 我想仅将我
  • 什么是 XCode Interface Builder“文档”部分

    我理解 Xcode 特定标签 部分 What I don t理解就是 注释 部分 我已经玩过它了 看不到任何明显的效果 谁能解释一下吗 它保存一个带有键的属性字符串userComments到故事板文件
  • 如何在 VBA 中重新调整数组的大小?

    我正在尝试在 MS Access VBA 中重新定义数组 做到这一点最有效的方法是什么 怎么样 这将保留 MyArray 中已有的数据 Redim Preserve MyArray 15 这将删除 MyArray 中先前存在的任何数据 Re
  • 清除日期时间选择器字段中的值

    我确信这很简单 而且我对 jquery javascript 的理解阻碍了我 但我无法让它工作 我需要做的就是 当单击屏幕上的按钮时 将表单上的一些输入字段清除回原始值 对于除日期时间选择器字段之外的所有字段 这都工作正常 这是定义输入字段
  • 如何从脚本标签中读取 JS 数据?

    我有一个外部文件 假设是 foo js function baz 然后在我的 HTML 中 我使用 script 标签导入它 我希望能够从 script 标签内部获取 JS 字符串 我尝试过jquery的html 以及innerHTML和i
  • 适用于 MIPS 和 x86 arch 的 android mupdf

    我目前正在使用MuPDF在我的 Android 应用程序中 当我从源代码 基于 ReadMe txt 构建它时 它只生成 so归档armeabi and armeabi v7a但不是x86 and MIPS 当我在arm arch设备 三星
  • Tidyr 的 Gather() 与 NA

    我在用tidyr and lubridate将宽表转换为长表 以下效果很好 gt df lt data frame hh id 1 2 bday 01 ymd 20150309 bday 02 ymd 19850911 bday 03 ym
  • 以编程方式将 ButtonColumn 从 DataTable 添加到 GridView

    我在 GridView 中添加带有按钮的列时遇到问题 从下面的代码中可以看出 GridView 的数据源是 DataTable 我需要使用按钮向表中添加一个附加列 从下面的代码中 我收到一条错误消息 System Windows Forms
  • Web 应用程序的多个服务器如何同步工作?

    我的第一个问题是 我经常读到人们使用多个专用服务器来运行他们的网站并处理用户的查询 但他们究竟是如何做到这一点的呢 我的意思是 当我输入域名时 DNS 会将其映射到 IP 地址 但在那之后我就迷失了 是否有某种主 从架构可以在 可能 数百个
  • echo php foreach 循环结果为 3 列

    我有一个 foreach 循环 我的代码看起来是这样的 foreach items as item echo item title 例如 我的循环中有 15 个项目 我的循环将输出如下内容 item 1 item 2 item 3 item
  • 在 laravel 5.5 中包含 node_modules 的简单方法

    如何在 laravel 5 5 应用程序中包含 node modules 我引用了这个https laravel com docs 5 5 mix https laravel com docs 5 5 mix 我可以做这个 npm inst
  • Angular2 - app.module 路由:空白路径未重定向到组件

    我已向我的应用程序添加了登录功能 当有人导航到路径为空的 URL 时 http example com http example com 我希望显示 HomeComponent 这将激活 AuthGuard 但将 URL 路径保留为空 我仍
  • 为什么构造函数要改变?

    为什么添加原型后构造函数从 Foo 变成了 Object 我怎样才能访问原始构造函数 Code function Foo var foo1 new Foo console log foo1 foo1 constructor Foo prot
  • 无法保护 Spring boot 管理执行器端点

    我正在尝试保护 Spring Boot 执行器端点 我的工作安全 apiREST 接口 但尝试在内置端点上添加安全性似乎不起作用 我已经在我的中设置了端点分组application properties management context
  • 将元素添加到向量末尾

    斯卡拉文档 http www scala lang org api current index html scala collection immutable Vector解释如何向 Vector 添加元素 def elem A Vecto
  • slurm 中的作业数组规范无效

    我正在 slurm 中提交一份玩具阵列作业 我的命令行是 sbatch p development t 0 30 0 n 1 a 1 2 j1 其中 j1 是脚本 bin bash echo job id is SLURM JOB ID e
  • Graphviz - 绘制最大派系

    我想使用 graphviz 来绘制给定图表的所有最大派系 因此 我希望同一最大集团中的节点在视觉上封装在一起 这意味着我希望有一个大圆圈围绕它们 我知道集群选项存在 但在我迄今为止看到的所有示例中 每个节点仅位于一个集群中 在最大派系情况下
  • 阻止人们在多个选项卡上加载我的网站

    我希望用户能够浏览我的网站only浏览器中的一个选项卡 如何才能做到这一点 我会使用 javascript 和 cookies 吗 例如 我有一个网站 www example com 我希望我的客户只能从一个浏览器的一个选项卡访问该网站 如