当前位置: 首页 > 知识库问答 >
问题:

这条“document.all”线在干什么?

乌璞瑜
2023-03-14

我是一个Flex/Actionscript难民,试图用JS/HTML5/CSS3实现我的目标。有些事情可以立竿见影,但还有一些事情却没有立竿见影。

我正在看这个JSFIDLE“纯Javascript可拖动”,我不理解这一行(或者更确切地说,我理解它在做什么,但不理解它是如何做的)

    x_pos = document.all ? window.event.clientX : e.pageX;

我查了一下“document.all”,它似乎是元素的缩写。queryselectoral()没有参数?

返回从调用它的元素派生的所有元素的非活动NodeList,这些元素与指定的CSS选择器组匹配。

  • 是这样吗?那么“all”参数意味着它返回DOM中的所有内容
  • “非现场”节点列表是什么意思?“非现场”
  • 实际线路是。。。测试是否为窗口。事件clientX或e.pageX是否非空

基本的东西,但令人困惑。

var selected = null, // Object of the element to be moved
    x_pos = 0, y_pos = 0, // Stores x & y coordinates of the mouse pointer
    x_elem = 0, y_elem = 0; // Stores top, left values (edge) of the element

// Will be called when user starts dragging an element
function _drag_init(elem) {
    // Store the object of the element which needs to be moved
    selected = elem;
    x_elem = x_pos - selected.offsetLeft;
    y_elem = y_pos - selected.offsetTop;
}

// Will be called when user dragging an element
function _move_elem(e) {
    x_pos = document.all ? window.event.clientX : e.pageX;
    y_pos = document.all ? window.event.clientY : e.pageY;
    if (selected !== null) {
        selected.style.left = (x_pos - x_elem) + 'px';
        selected.style.top = (y_pos - y_elem) + 'px';
    }
}

// Destroy the object when we are done
function _destroy() {
    selected = null;
}

// Bind the functions...
document.getElementById('draggable-element').onmousedown = function () {
    _drag_init(this);
    return false;
};

document.onmousemove = _move_elem;
document.onmouseup = _destroy;

共有2个答案

荣沈义
2023-03-14

文件全部的

正在检查该方法是否存在(在三元赋值内)

“非现场”节点列表是什么意思?“非现场”?

这意味着,如果您对检索到的节点列表中的项目执行会影响节点列表的操作,则列表不会更改,这是安全的
(典型示例是按类名选择,然后更改类名)<如果您从getElementsByClassName获得了列表,列表将立即更新,从而影响列表。

也就是说,在您的示例脚本中,您从未使用querySelectorAll(),

引用波蒂的评论

"document.all是微软IE的老把戏,基本上是检测代码是否在Internet Explorer中运行的一种(糟糕的)方法。"

冷宏茂
2023-03-14

是这样吗?那么“all”参数意味着它返回DOM中的所有内容?

是的。页面中的每一个元素都放在一个一维的数组结构中,然后交给你。

“非现场”节点列表是什么意思?“非现场”?

节点列表可以是活动的,也可以是非活动的。活动节点列表意味着当相关DOM更改时(即:如果我删除了<代码>

实际的行是...测试window.event.clientX或e.pageX是否为非空?

document.all可能用于检查正在使用什么浏览器。在这种情况下,它检查要使用哪个事件对象,是全局事件还是本地事件。

 类似资料:
  • <代码>文档。all是DOM中的一个非原始对象,它是falsy。 例如,此代码不做任何事情: 有人能解释一下这是为什么吗?

  • We had assumed that Bezos was just reinvesting the profits, that's why they weren't showing up on the bottom line. 我们曾经假设贝索斯只是在重新投资他的利润。这也是为什么他们今年没有排名倒数的原因。 Last year, about this time, the first big d

  • 问题内容: 当你应该使用与? 问题答案: 是W3C标准的专有Microsoft扩展。 是标准的-使用它。 但是,请考虑使用像jQuery这样的js库是否会派上用场。例如,相当于的jQuery 。另外,您不仅可以使用CSS3选择器。

  • 我的应用程序不想进入我的游戏控制器。php函数。它确实在group函数中,我用vardump对其进行了测试。它会一直走下去,直到它撞上“游戏”路线,然后它就不想走这条路线。 routes.php: GameController.php: AuthenticationController。php: 目标是当我的用户登录时转到游戏页面,这是因为Laravel会话cookie已经制作完成(我检查过),我

  • 我正在创建一个camel路由,它从本地服务器读取文件,添加一些头,然后将内容写入另一个远程sftp服务器上的文件。 我动态设置的标题之一是登录最终服务器所需的用户名。然而,当连接发生时,我可以看到我设置的用户名没有用于登录,而是使用文字值“${in.header.senderTargetUserName}”。该属性尚未解析。 这是代码: 我有一个例外: 当我在最终代码引发异常之前设置断点时,我可以

  • 我使用的是Chart.js2.6,我已经实现了horizontalLine插件,在条形图上显示平均值。它可以正常工作,但是当工具提示显示在与直线相交的位置时,它部分被水平线本身覆盖。我试图找出如何使工具提示在水平线上方绘制。 我知道工具提示是canvas元素的一部分,因此没有z-index属性。我怎样才能做到这一点? 下面是我使用的水平线插件。 ... 然后我使用以下命令将其添加到条形图选项中 它