1

使用 PhantomJS V 1.8.1

提前致谢。

我正在尝试在我正在开发的使用backbone.js 的网站上运行一些测试。

我的一项测试涉及检查 Canvas 是否存在并单击它。我的问题是,无论我使用什么选择器来获取 Canvas 元素,我都无法让选择器找到它。查看页面时,我在 Google Chrome 中使用相同的 CSS 选择器,一切正常。起初我认为问题可能是由于页面上不存在该元素,但存在与画布一起插入的其他元素,所以我 99% 确定这不是问题。

我尝试使用的选择器是:

document.querySelectorAll('#idOfCanvas');

document.querySelectorAll('canvas#idOfCanvas');

此外,如果我.classClassName:nth(1)用来选择轮胎选择器,它仍然无法工作(在谷歌浏览器中工作,但与提供的其他示例一样)

画布有一个由选择器拾取的类名,我宁愿不使用类选择器。

任何帮助将非常感激。

干杯:)

就像我提到的那样,我几乎可以肯定 Canvas 作为容器 div 的存在而存在。此外,我在页面上有四个元素具有相同的类名(其中两个是画布),并且在我运行时返回了四个元素

返回 document.querySelectorAll('.className').length = 4;

4

2 回答 2

0

假设你有这样的事情:

<canvas id="idOfCanvas"></canvas>

这应该有效:

canvas = document.getElementById("idOfCanvas");
// or
canvas = document.querySelector("#idOfCanvas"); // Only get the first match, ID's should be unique, any way.;
// or
canvas = document.querySelectorAll("#idOfCanvas")[0];
// or
canvas = document.getElementsByTagName("canvas")[0]; // Get the first <canvas> element.

但是,您必须确保在执行脚本时实际加载了您的画布元素。例如,看看这个onload教程

于 2013-02-01T12:05:26.787 回答
-1

尝试这个 :

canvas = document.getElementById(#IdOfCanvas:nth-child(1));
于 2014-02-05T07:26:56.053 回答