网站搜索

javascript - 为什么 Selenium 无法找到动态添加的 DOM 元素?

我用 jQuery 添加了一个 DOM 元素(一个链接)。我可以在 Firebug 中看到这个元素,但不知为什么 Selenium 找不到它。发生了什么?

注意:这里没有涉及 AJAX,所以 DOM 元素几乎会立即被添加。

== 编辑 ==

这是一些代码(使用 jQuery),用于在文档末尾添加一个链接:

$element = $("<a id="foo" href="#"></a>"); $element.appendTo($("body"));

我正在使用 Capybara(配合 Selenium)来查找链接并点击它,如下所示:

find("#foo").click

在我开始用 jQuery 向 DOM 添加元素之前,我在使用 Capybara 或 Selenium 时没有遇到任何问题。

答案#1

尝试在你的测试代

阅读更多 →

javascript - 我如何在不更改 DOM 的情况下计算文本选区的高度

我正在使用 Range 来操作选定的文本。我想计算从某人开始选择文本的位置到他们完成选择的位置的高度。

我尝试在所选范围的开始和结束处添加一个跨度,这样我可以准确地计算出高度,但它会改变 DOM,并阻止我进行一些其他的范围操作,比如高亮之前选中的文本。

我也尝试过收集鼠标按下和鼠标抬起的位置,但我需要从选中文本的顶部到释放选择位置的文本底部的准确高度,而情况并非总是如此。

所以我在想是否有办法在不改变 DOM 的情况下计算文本选择的高度?

阅读更多 →

javascript - 检测同一域名的其他标签页/窗口的存在

如果我在同一个域名下打开了两个(或更多)标签页,有没有一种简单的方法来感知另一个标签页的存在(以便控制我进行的计算)?我了解有一个 window.open() 函数,但我并不是从一个窗口打开另一个窗口。相反,想象一下用户在 mydomain.com 打开了两个标签页。

我已经开始编写一些使用 HTML5 本地存储的代码,我会定期留下消息并检查消息,但这似乎有点复杂。

答案#1

那是一个有趣的问题。

我们可以尝试那些 API:postMessage, sessionStorage, localSt

阅读更多 →

javascript - 如何从 DOM 元素获取 Ext JS 组件

尝试创建一个内联编辑表单。我有一个表单看起来是这样的:

var editPic = "<img src='https://s3.amazonaws.com/bzimages/pencil.png' alt='edit' height='24' width='24' style='margin-left: 10px;'/>"; var submitPic = "<img id='submitPic' src='https://s3.amazonaws.com/bzimages/submitPic.png' alt='edit' height='24' width='24'/>"; Ext.d

阅读更多 →

javascript - Three.js:在立方体的某个面上渲染一个 HTML 页面/DOM 元素?

我正在尝试修改 Three.js 包中提供的示例文件 canvas_geometry_cube.html,并将立方体的每个面更改为显示 HTML 页面/DOM 元素(最好是 DOM 元素)。我看了一下 ParticleDOMMaterial,但我不知道如何使用它,也不清楚它的作用。有人能帮忙吗?

答案#1

为了根据 Three.js 最近的一些改进更新这个老问题,并为未来的读者提供参考

Three.js 现在实际上支持 CSS3D 作为渲染输出,因此您可以使用 CSS 3D 变换来操纵 HTML 页面/DOM 元素。

例如,请参见这里:http://mrdoob.github.io/three.js/examples/css3d_periodictable.html

答案#2

DOMRenderer 不是一个完整的 3D 渲染器,它只能

阅读更多 →

javascript - YUI 3:如何获取封装在 Node 内的原生 DOM 元素?

我使用这个简单的技巧在 jQuery 中获取原生 DOM 元素:

var el = $('#myid'); var native = el[0]; //or el.get(0);

我如何在 YUI 3 中做到这一点?例如,我想使用 getElementsByName DOM 方法,而 YUI 3 不支持该方法。

答案#1

var el = Y.one("#myid"); var native = el.getDO

阅读更多 →

javascript - Respond.js 跨域不工作

我在使 Respond 的 CDN/X-Domain 设置工作时遇到了困难。

我一开始是从 CDN 提供所有资源:

<link rel="stylesheet" href="http://cdn.example.com/css/main.css?2013012401"> <script src="http://cdn.example.com/js/modernizr-2.6.2.min.js?2013012401"></script> <script src="http://cdn.example.com/js/respond.min.js?2013012401"></script>

理论上这应该可行,因为所有资源都来自同一域。不过 IE8 并没有像应有的那样支持媒体查询。因此我调查了 Respond 的 CDN/跨域设置,并将我的 <head> 部分修改为如下内容:

<link

阅读更多 →

javascript - jQuery 可以操作用 DOM 创建的临时文档吗?

我想要实现的事情是通过传递一个大的 HTML 字符串,使用 jQuery 操纵使用 DOM 创建的文档。请考虑以下示例:

var doctype = document.implementation.createDocumentType( 'html', '', ''); var dom = document.implementation.createDocument('', 'html', doctype); dom.documentElement.innerHTML = '<head><head><title>A ti

阅读更多 →

javascript - DOM 对象构造函数不能作为函数调用

我在 JavaScript 上有这个函数,它在 Firefox 上可以使用,但在 Google Chrome 上不行

function sendInfo(userId, Code) { // text with all info to send to controller var values = { "token": Code, "code": userId } // POST THE CHANGE HERE TO T

阅读更多 →

javascript - 如何编写一个将项目添加到 DOM 并延迟下一次执行的函数?

我最近在网上发现了以下问题:

编写一个函数,该函数接收一个对象并将其附加到 DOM 中,使事件被缓冲直到下一个时钟周期?解释为什么这有用?

这是我的回答:

function appendElement(element) { setTimeout(function() { document.body.appendChild(element); }, 0); }

阅读更多 →