如何将 querySelectorAll() 函数添加到 IE <= 7 的 Element 中?

2024-01-08

代码来自本文 http://www.codecouch.com/2012/05/adding-document-queryselectorall-support-to-ie-7/我已经添加成功了querySelectorAll to document in IE7.

但我需要在element而不是document, 像这样:

var containers = document.querySelectorAll('.container');   // Works
for (var i=0; i<=containers.length; i++) {
    var container = containers[i];
    container.querySelectorAll('a[data-type="people"]');    // Fails
    // ...
}

有没有办法添加querySelectorAllIE7 中的元素而不仅仅是document?


非常有趣的问题。

我倾向于使用图书馆来做到这一点,比如jQuery http://jquery.com,下面提到的其中之一,Closure http://code.google.com/closure/library, or 其他几个中的任何一个 http://en.wikipedia.org/wiki/List_of_JavaScript_libraries。或者只是使用Sizzle https://github.com/jquery/sizzle/(jQuery 在 v1.9 分支中使用的选择器引擎)。

但回答你实际问的问题:

你不能在 IE7 上扩展元素原型(遗憾的是),所以除非你想通过预处理器函数运行所有元素实例来添加querySelectorAll对他们来说(方式原型 http://prototypejs.org and MooTools http://mootools.net/例如,工作),您必须有一个单独的函数来将元素传递到其中。

这是编写该函数的一种方法:

var qsaWorker = (function() {
    var idAllocator = 10000;

    function qsaWorker(element, selector) {
        var needsID = element.id === "";
        if (needsID) {
            ++idAllocator;
            element.id = "__qsa" + idAllocator;
        }
        try {
            return document.querySelectorAll("#" + element.id + " " + selector);
        }
        finally {
            if (needsID) {
                element.id = "";
            }
        }
    }

    return qsaWorker;
})();

当然,如果你想使用qsaWorker在具有以下功能的浏览器中querySelectorAll,你想要这个:

function qsaWorker(element, selector) {
    return element.querySelectorAll(selector);
}

那么总的来说,您可能想要:

var qsaWorker = (function() {
    var idAllocator = 10000;

    function qsaWorkerShim(element, selector) {
        var needsID = element.id === "";
        if (needsID) {
            ++idAllocator;
            element.id = "__qsa" + idAllocator;
        }
        try {
            return document.querySelectorAll("#" + element.id + " " + selector);
        }
        finally {
            if (needsID) {
                element.id = "";
            }
        }
    }

    function qsaWorkerWrap(element, selector) {
        return element.querySelectorAll(selector);
    }

    // Return the one this browser wants to use
    return document.createElement('div').querySelectorAll ? qsaWorkerWrap : qsaWorkerShim;
})();

使用它的代码将如下所示:

var containers = document.querySelectorAll('.container');
for (var i=0; i<=containers.length; i++) {
    var container = containers[i];
    var links = qsaWorker(container, 'a[data-type="people"]'); // <== Changed
    // ...
}

但同样,我倾向于使用图书馆......

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

如何将 querySelectorAll() 函数添加到 IE <= 7 的 Element 中? 的相关文章

  • 如何使用 Shopify API 将商品添加到购物车

    我正在使用 Shopify API 开发自定义网络应用程序 这里的想法是使用应用程序作为独家店面 只需向 Shopify API 发出请求 我已在我的 Shopify 帐户中设置了一个私人应用程序来执行此操作 我从 api 提取产品没有问题
  • 使用 jquery 淡入/淡出

    我正在研究我的学生项目 我是新的 jquery 对于该项目 我必须使用 jquery 来增强一些功能 并且我已经学到了很多来执行基本任务 但我陷入了一些非常令人困惑的事情 我的一个脚本实际上在鼠标悬停在功能上时更改了 div 容器的图像 功
  • Node + now.js + 模型-视图-控制-模式

    我正在使用基于 MVC 模式 模板和 PHP 类 的论坛软件 页面如下所示 domain com index php page Test 我想使用 Node 和 now js 在一个页面 domain com index php page
  • ScrollTop 在 Chrome/Safari 中不起作用

    我的网站上有一个循环内的表单 当有人提交表单时 查询字符串会添加到 URL 中 例如 updated 111 然后 我的 JQuery 脚本检查数字的 url 并在提交表单并重新加载页面后滚动到该 div 该脚本在 Firefox 中运行良
  • 流媒体性能 - Canvas 与

    我正在开发一个应用程序 需要通过 webSocket 连接以每秒至少 30 帧的速度持续传输图像 我遇到了一些性能问题 并希望尽我所能进行优化 我想知道使用不断更新的图像之间的性能差异是什么 就像这样 img src someDynamic
  • Node.js Google-云存储上传目的地规范

    我有一个 Node js 服务器并且正在使用谷歌云上传一些图像文件的包Firebase 存储 上传本身工作正常 但 google cloud API 似乎只能将文件上传到 Firebase Storage 根文件夹 有没有办法指定远程位置来
  • 如何使用 Underscore 获取 JavaScript 数组中的重复项

    我有一个数组 我需要重复的项目并根据特定属性打印这些项目 我知道如何使用 underscore js 获取唯一项目 但我需要找到重复项而不是唯一值 var somevalue name john country spain name jan
  • Chart.js - 如何将数组集合推入数据集

    我一直在尝试多种方法将数组集合推送到数据集中 任何人都可以帮助我根据下面的代码将数组推入堆积图表中 这是例子 Codepen 堆叠栏 https codepen io narendrajadhav pen abzpWam JavaScrip
  • 如何更改点击事件上的引导插入符指向方向

    我正在使用 2 3 2 引导程序 因为当我单击菜单按钮时 我可以更改插入符号图标的位置 我需要当我单击图标插入符号向上时 当您单击另一个项目时 插入符号返回到初始状态 这怎么可能 导航代码 div div class container d
  • 使用 Javascript 对象模型在 SharePoint 任务上设置“分配给”

    我想创建一个共享点任务并将其分配给我自己 当前用户 在 javascript 对象模型中 我有下面的代码 但我认为我需要设置 spusercollection 对象 而不是设置特定用户 但是 我似乎无法在任何地方找到如何执行此操作的任何示例
  • 无法提取 Typescript 中的对象值

    我一直在尝试将 JavaScript Web 表单转换为 Typescript 但无法弄清楚如何处理以下内容 在 JavaScript 中有效 let fieldValues JSON parse cookieData let keys O
  • React JS“this”没有按预期工作

    我有下面的代码 save function var this this console log this refs itemText this setState isEditing false function console log In
  • Backbone.js 应用程序可以逐步增强并可供搜索引擎抓取吗?

    我需要为我的下一个项目实现一个 MVC JavaScript 框架 但它既是一个网站 又是一个 Web 应用程序 是否可以公开数据服务器端 然后解析 URL 以显示 JS 版本 我计划使用 Rails 作为服务器端代码 我写了一个关于这个主
  • 它们是“相同的”吗?代码大战

    这是完整的问题描述 给定两个数组 a 和 b 编写一个函数 comp a b Clojure 中的 compSame a b 来检查这两个数组是否具有 相同 元素以及相同的重数 这里 相同 意味着 b 中的元素是 a 平方中的元素 无论顺序
  • 如何使用javascript从特定标签获取HTML文档中的所有textNode?

    如何在不使用xpath或treewalker的情况下从单个数组中的一组特定标签中获取所有textNodes blockquote em h4 h6 p IE不允许您使用xpath和treewalker 请帮助我 如果脚本仅适用于 IE 那就
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • 调用不带括号的 javascript 函数

    以下 renderChat 函数用于将消息和图像渲染到聊天板上 该函数内部还有另一个函数 var onComplete function 它完成创建列表元素并将其附加到聊天列表的所有工作 onComplete函数之后就只有这三行代码 img
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • 使用 Three.js 中的设备方向控件进行对象旋转

    我正在迈出使用 JavaScript 进行编码并使用 Three js 的第一步 我正在尝试 Threejs org 的这个例子 http trijs org examples misc controls deviceorientation
  • 调试客户端时使用 Chrome/Firefox

    我正在使用带有 getUserMedia 的相机 但出现了一些需要修复的错误 问题是 Visual Studio 只允许我使用 IE 调试 JavaScript 我的意思是命中断点 而 IE 不支持 getUserMedia 如果您想在 I

随机推荐

  • Angular 2+ - 检查 Pipe 是否返回原始列表的空子集

    我有一个要迭代的字符串列表 但我希望能够使用搜索词过滤它们 像这样 div item div 我的问题是 如何检查管道是否返回列表的空子集 换句话说 如果没有任何字符串与搜索词匹配 我想显示一条消息 没有匹配项 div No matches
  • 加载时淡入延迟

    我偶然发现了一些非常好的东西 我想在即将到来的项目中使用 这是加载时的动画不透明度 或者您可以将其称为淡入 我想知道你是否可以将一些元素链接在一起 例如 3 element2仅在以下时间开始element1完成了 并且element3当没有
  • 在 Ubuntu 18.04 上安装 Ruby 2.3.x 在安装过程结束时导致错误

    我最近将系统更新到了 Ubuntu 18 04 LTS 从那时起 Ruby 版本似乎已经更新到了 2 5 问题是 当尝试部署使用 Capistrano 的项目时 它现在会抱怨找不到 Ruby 2 3 运行时尝试安装的版本rvm instal
  • 将 Docker-Machine 与 Amazon EC2 集成

    我正在阅读这篇文章 它向我展示了如何在 amazon ec2 之上配置我的 docker VM https docs docker com machine drivers aws https docs docker com machine
  • 在打字稿模块内扩展全局类型(例如“Window”)

    如果您使用打字稿编写并且不使用模块 则可以扩展全局Window目的 例如 这样编译 interface Window myCounter number window myCounter window myCounter 0 window m
  • 我不知道如何让我的玩家在接触敌人时死亡

    就像标题所说 我不知道如何让我的玩家在敌人接触他时死亡 我已经查过了 但我仍然无法弄清楚这一点 有什么想法吗 跳过下一部分 希望我在这里放更多东西 但显然没有说到重点 ulahtluihliukhrefluijaheuflhawuleifh
  • 实例化一个 TypeVar 类型

    作为一名 C 程序员 以下代码对我来说似乎很自然 但它无法运行 from typing import TypeVar Generic List NewType TPopMember TypeVar TPopMember Population
  • 在嵌入式 x86 程序集中使用数组?

    我有一个方法 C 它返回一个字符并采用一个字符数组作为其参数 我第一次搞乱汇编 只是试图返回 dl 寄存器中数组的第一个字符 这是我到目前为止所拥有的 char returnFirstChar char arrayOfLetters cha
  • PHP DOM:更改现有 DOMDocument 的文档类型

    创建 DOMDocument 时DOMImplementation createDocument http www php net manual en domimplementation createdocument php 您可以指定文档
  • Python - 如果不是带有 0.0 的语句

    我有一个关于if not中的声明Python 2 7 我写了一些代码并使用了if not声明 在我编写的代码的一部分中 我引用了一个函数 其中包含if not语句来确定是否输入了可选关键字 它工作正常 除了当0 0是关键字的值 我明白这是因
  • 导航栏大标题 - 动画问题

    我在导航栏上使用大标题 当我点击一个单元格进入下一个控制器时 大标题有一个奇怪的动画 如下面的 gif 所示 它不会立即消失 我尝试了以下解决方案 但没有任何结果 https www morningswiftui com blog fix
  • p:fileUpload required =“true”并且自定义验证器不起作用[重复]

    这个问题在这里已经有答案了 自从required的属性
  • 间歇性和临时性 iOS 钥匙串故障

    我们有一个应用程序严重依赖于能够使用 iOS 访问用户的会话令牌Keychain 当我们的应用程序打开时 首先检查的是令牌是否可用 如果不可用 我们会向用户显示登录屏幕 我们不为此使用任何第三方库 并使用Keychain s SecItem
  • 如何恢复 Mercurial hg 拉动?

    如果你做一个hg pull然后一个hg update or an hg merge 有办法解决这个问题吗 即 将存储库恢复到执行以下操作之前的状态hg pull 我相信你能做到hg update r n您可以在拉取之前将变更集指定为n 虽然
  • 如何将数据库查询映射到对象[在Java中]?

    我有一个连接 5 个表的查询 然后我用我需要的列值填充我的手工对象 使用特定工具解决该问题的常见解决方案有哪些 有这样的工具吗 我才刚刚开始学习 Hibernate 所以我的问题是 Hibernate 是解决这个问题的正确决定吗 Hiber
  • 使用 Express 限制对 Node.js 的访问

    我确实在服务器中运行了一个node js 脚本 我想要的是它不能直接从浏览器访问 而且我希望只有某些域 IP 可以调用它 是否可以 不确定如何区分从浏览器访问和从其他软件访问某些内容 但限制对某些域 IP 的访问应该是可行的 以下 非生产
  • 如何从字符串末尾删除子字符串(删除字符串的后缀)?

    我有以下代码 url abcdc com print url strip com 我期望 abcdc I got abcd Now I do url rsplit com 1 有没有更好的办法 See How do the strip rs
  • 通过接口获取结构体的值

    我正在尝试解析这份请愿书 我在为其创建结构时遇到了很多问题 所以我使用了一个自动化工具 这就是我的结构的样子 type orderBook struct Bids interface json Bids Asks interface jso
  • cuBLAS 矩阵求逆比 MATLAB 慢得多

    在我当前的项目中 我尝试使用 cuBLAS 计算大型 n gt 2000 矩阵的逆矩阵 执行了逆计算 但由于某种原因 计算时间比在 MATLAB 中完成的计算时间要慢得多 我附上了使用任一语言的实现对随机矩阵执行的示例计算以及性能结果 任何
  • 如何将 querySelectorAll() 函数添加到 IE <= 7 的 Element 中?

    代码来自本文 http www codecouch com 2012 05 adding document queryselectorall support to ie 7 我已经添加成功了querySelectorAll to docum