我正在使用<script>
内部执行外部脚本<head>
.
现在,由于脚本在页面加载之前执行,我无法访问<body>
其中的内容.在文档被"加载"(HTML完全下载并在RAM中)后,我想执行一些JavaScript.我的脚本执行时是否有任何可以挂钩的事件,这些事件会在页面加载时触发?
我正在尝试创建一个Facebook iFrame应用程序.应用程序应首先显示图像,如果用户喜欢该页面,他将可以访问某些内容.
我使用RoR,因此我无法使用Facebook PhP SDK.
当用户不喜欢该页面时,这是我的iFrame HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
body {
width:520px;
margin:0; padding:0; border:0;
font-family: verdana;
background:url(repeat.png) repeat;
margin-bottom:10px;
}
p, h1 {width:450px; margin-left:50px; color:#FFF;}
p {font-size:11px;}
</style>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<div id="container">
<img src="welcome.png" alt="Frontimg">
</div>
Run Code Online (Sandbox Code Playgroud)
并且,如果用户喜欢该页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
body …
Run Code Online (Sandbox Code Playgroud) 我在Web Inspector中收到错误,如下所示:
TypeError: 'null' is not an object (evaluating 'myButton.onclick = function() {
var userName = myTextfield.value;
greetUser(userName);
return false;
}')
Run Code Online (Sandbox Code Playgroud)
这是我的代码(HTML):
<h2>Hello World!</h2>
<p id="myParagraph">This is an example website</p>
<script src="js/script.js" type="text/javascript"></script>
<form>
<input type="text" id="myTextfield" placeholder="Type your name" />
<input type="submit" id="myButton" value="Go" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是JS:
var myButton = document.getElementById("myButton");
var myTextfield = document.getElementById("myTextfield");
function greetUser(userName) {
var greeting = "Hello " + userName + "!";
document.getElementsByTagName ("h2")[0].innerHTML = greeting;
}
myButton.onclick = function() {
var userName = …
Run Code Online (Sandbox Code Playgroud) 好的,这就是情况:我有2页:
现在在html页面中,将有内部javascript编码,以允许放置'window.onload',以及其他页面特定的方法/功能.
但是,在外部javascript中,我希望在触发'window.onload'事件之前完成某些事情.这是为了允许首先初始化定制组件.
有没有办法确保在触发'window.onload'事件之前在外部javascript中进行初始化?
我之所以这样说的原因,就是尝试制作可重用的代码(构建一次 - 全部使用),外部脚本必须在主html/jsp/asp中的javascript之前检查它是否在'order/check'中/ php页面接管.而且我也不是在寻找JQuery @ _ @的解决方案
以下是stackoverflow.com上的一些链接我已经浏览了解决方案:
- Javascript - 如何检测文档是否已加载(IE 7/Firefox 3)
- 如何检查页面是否已完全加载(脚本和所有)?
- 页面完全加载时执行Javascript
有人可以帮助或指导我找到解决方案吗,你的帮助将是非常值得赞赏的,请 - 谢谢:D
此致,克雷格
大家好,感谢您的建议和建议的解决方案,它们在搜索和测试可行解决方案时都非常有用.虽然我觉得我对自己的成绩并不是百分之百满意,但我知道你的建议和帮助让我更接近解决方案,并且可能确实在类似的情况下帮助其他人.
以下是我的想法:
test_page.html
<html>
<head>
<title></title>
<script type="text/javascript" src="loader.js"></script>
<script type="text/javascript" src="test_script_1.js"></script>
<script type="text/javascript" src="test_script_2.js"></script>
<script type="text/javascript">
window.onload = function() {
document.getElementById("div_1").innerHTML = "window.onload complete!";
}
</script>
<style type="text/css">
div {
border:thin solid #000000;
width:500px;
}
</head>
<body>
<div id="div_1"></div>
<br/><br/>
<div id="div_2"></div>
<br/><br/>
<div id="div_3"></div>
</body> …
Run Code Online (Sandbox Code Playgroud) 我想打开一个新窗口,该窗口有一个对象列表,并且应根据前一个窗口中的选择来过滤这些对象。我想我可以通过函数过滤列表,但是如何运行该函数?
这就是我能够做的:
var popup = window.open('pageURL');
$(popup.document).ready(function() {
// this is where function should be
popup.alert('HelloWorld');
});
Run Code Online (Sandbox Code Playgroud)
但是如何将警报更改为功能呢?
如果我的其他应用程序上有一个函数,function test() { alert('HelloWorld'};
如何从我的第一个应用程序中运行该函数?
交换没有用popup.alert('HelloWorld');
。popup.test();
在Django中,如何在实际使用之前处理需要等待JS文件加载的事实?
让我们看看这个例子的问题:
base.html文件
<!DOCTYPE html>
<html>
<head>...</head>
<body>
{% include "content.html" %}
<script src="jquery.js"></script>
<script src="awesome-script.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
content.html
<script>
$(document).ready(function(){
...
});
</script>
Run Code Online (Sandbox Code Playgroud)
这在逻辑上失败($ is undefined
).我可以在调用脚本之前加载jQuery,但我试图避免在我的主要内容之前加载JS文件以尽可能快地加载网站.
那么,我该怎么办?谢谢.
window.onload
如果没有在里面设置变量,有没有办法检测页面是否已完成加载?
我在一个可能或可能没有完全加载的页面中注入了一些第三方JS.我无法修改页面.我不能使用JQuery.
我可以添加一个函数并重复轮询,直到它返回true(页面满载).有任何想法吗?
这里或那里都没有回答这个问题。这些问题措辞不佳,答案都是“使用DOMReady”。
我想确保代码仅在页面加载完成后运行。我不能改变 HTML 文件本身,但如果可以,我会做一些这样的事情:
<!DOCTYPE html>
<html>
<head>
<script>window.loaded=false;</script>
</head>
<body onload="window.loaded=true;">
<!-- ... -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中:
if (window.loaded) { run(); }
else { document.addEventListener("load", run); }
Run Code Online (Sandbox Code Playgroud)
这将实现我想要的。不幸的是,我无法修改 HTML,这意味着我正在寻找一种仅从 JS 代码确定文档是否已加载(而不是DOM 是否已准备就绪)的方法。
我环顾四周,但到目前为止,我发现的所有内容都围绕 DOMReady。真的没有人找过这个吗?