从javascript访问不同的HTML文件
Accessing different HTML files from javascript
我有一个javascript文件,它被两个html文件调用,我需要javascript来编辑1.html和2.html上的画布,除非我把两个画布都放在同一个html文件中,否则这是不起作用的。有没有办法解决这个问题,下面是代码:
HTML1
<body>
<canvas class="canvas" id="canvas1"></canvas>
</body
</html>
HTML2
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<canvas class="canvas" id="canvas2"></canvas>
</body
</html>
Javascript:
for (var i = 1; i<3; i++) {
var c=document.getElementById("canvas"+[i]);
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
}
除非我把两个拉票放在同一个html文件中,否则这是不起作用的,然后它就起作用了
编辑:请注意,我确实希望代码始终在后台运行,更新我不在的htlm文件。填充和清除只是我代码的占位符,这不是问题的一部分
简短回答:没有。
长答案:
JavaScript的作用域始终是当前文档,因此您不能同时访问2。但是,如果两个文档都在某种层次结构中,则有一些方法可以做到这一点。
如果您从1.html打开一个新窗口,您可以保存对该新窗口的引用并访问其内容。JavaScriptKit:通过另一个访问窗口的对象
这也通过window.opener
引用起到相反的作用。
HTML5中的新功能也是window.postMessage
。你可能想调查一下,因为这可能符合你的需要。Mozilla开发者网络:window.postMessage
如果你显然想让同一个脚本在两页上工作,只需对两个拉票使用相同的id,而不是循环,你就可以了。
var c=document.getElementById("canvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
和你的html:
<!--1.html-->
…
<canvas class="canvas" id="canvas"></canvas>
…
<!--2.html-->
…
<canvas class="canvas" id="canvas"></canvas>
…
如果为不存在的元素getElementById
,则会得到undefined
。
如果尝试访问undefined
的属性,则会出现错误,脚本将停止执行。
获得元素后,测试是否获得了元素,如果没有,则跳到下一个循环迭代。
if (typeof ctx === "undefined") { continue; }
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 导入jQuery脚本获胜'我不处理html文件
- 生成pdf或其他非html文件时的错误处理
- 如果使用javascript函数屏幕太小,我该如何更改HTML文件的背景色
- html文件中的script标记根本不起作用
- 从单独的html文件预览Javascript文本
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- Android在webview中加载带有javascript的html文件,得到Uncaught ReferenceEr
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 当我在浏览器中打开HTML文件时,javascript不起作用
- 如何在另一个html文件的框架中包含图像
- 压缩静态HTML文件中的JS和CSS
- 从HTML文件中的TypeScript(.ts)获取值
- 以HTML文件中的编码形式脱机存储图像
- ionic幻灯片框中的每张幻灯片都有不同的HTML文件
- 加载具有特定CSS的HTML文件
- 使用Gulp手柄部分编译为单个HTML文件
- 使用javascript检查服务器上是否存在html文件
- 在本地启动HTML文件
- javascript从选中的复选框中检索输入值,并在同一网页中显示多个html文件