javascript - P5 创建,我该如何防止呢?
问题描述
每次执行我的 p5 脚本时,它都会在正文中放入一个空的主标记。
也许是因为我的设置(但我不这么认为):
function setup() {
let canv = createCanvas(400, 400), // TODO https://p5js.org/reference/#p5.Element/parent
mainFrame = createElement('main'),
mainDiv = createDiv();
mainDiv.parent(mainFrame);
canv.parent(mainDiv);
.
.
.
}
结果如下所示:
<body>
<main></main>
<main>
<div>
<canvas id="defaultCanvas0" class="p5Canvas" width="400" height="400" style="width: 400px; height: 400px;"></canvas>
</div>
</main>
.
.
.
</body>
有没有类似的东西preventDefault()
?
解决方案
在将前一个容器设置为另一个之前保留对前一个容器的引用,然后再删除前一个。
function setup() {
let mainFrame = createElement('main'),
let canv = createCanvas(400, 400);
// keep a reference
let originParent = canv.parent();
canv.parent(mainFrame);
// delete it now
originParent.remove();
}
如果您正在运行instance mode
,您可以node
像这样将 a 传递给 p5() 构造函数。这将首先防止main
被创建。
const s = p => {
p.setup = function() {
p.createCanvas(400, 400);
};
p.draw = function() {
};
};
new p5(s, document.body);
未来阅读有关它是如何在global mode
.
通过sourceglobal mode
创建元素new p5()
,而不像我们在上面的示例中那样传递 a作为参数,所以在这里,source你将看到节点是如何创建的,node
instance mode
main
if (this._userNode) {
// user input node case
this._userNode.appendChild(c);
} else {
//create main element
if (document.getElementsByTagName('main').length === 0) {
let m = document.createElement('main');
document.body.appendChild(m);
}
//append canvas to main
document.getElementsByTagName('main')[0].appendChild(c);
}
_userNode
被分配给我们传入的参数,它global mode
不存在,所以它创建了一个main
元素作为容器。
推荐阅读
- c# - 无法绑定参数,导致绑定不支持参数类型(Azure Functions的HttpTrigger)
- php - 如果用户点击了链接,则使用 PHP/Wordpress 添加类和存储
- list - 在列表列表中追加列表 - Haskell
- python-3.x - 是否有可能在不知道结构的情况下制作与 python 3.6 中另一个文件相同副本的 hdf5 文件?
- javascript - javascript/jquery css 动态地将列表项变成梯形并填满屏幕
- docker - 如何在 docker 容器上使用主机 IP?
- php - 如何使用 PHP 将选择值传递给表单操作?
- android - json地图样式解析在android中失败
- node.js - Node.js 中的 Cookie 转换
- flutter - 颤振中的 notifyListeners 不起作用,即该值根本没有更新