作者On1earth (小浅)
看板Ajax
标题[问题] 外部javascript想知道页面是否载入完成
时间Tue May 1 21:37:17 2012
请问各位大大,我参考google +1跟facebook Like按钮的做法,
有一个页面,动态引入一个外部js,
该外部js想读取页面上的一个元素,并对这个元素做一些操作,
该页面html如下:(test.html)
--------------------------------------
<html>
<head>
<script type="text/javascript">
(function() {
var newObj = document.createElement('script');
newObj.type = 'text/javascript';
newObj.charset = 'UTF-8';
newObj.async = true;
newObj.src = 'extjs.js';
var oldObj = document.getElementsByTagName('script')[0];
oldObj.parentNode.insertBefore(newObj, oldObj);
})();
</script>
</head>
<body>
<div id="Div1"></div>
</body>
</html>
外部js如下:(extjs.js)
--------------------------------------
(function() {
var _Div1 = document.getElementById('Div1');
alert(_Div1); //Firefox, IE, Chrome可以抓到, Opera则显示null
})();
有问题的地方在 alert(_Div1) 那里,
Firefox, IE, Chrome都可以抓到这个div元素,但是Opera抓不到(显示null),
我想请问要怎麽在extjs.js知道test.html的DOM已经都载入完成了?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.70.99
1F:推 tfshnike:Ext.onReady ? 05/01 22:54
to tfshnike: 请问这个要放在哪边呢?
2F:推 arthas1107:外部JS前面是不是少了$,载入DOM後执行的写法有 05/01 23:02
3F:→ arthas1107:$(function(){});或$(document).ready(function(){}); 05/01 23:03
to arthas1107: 这个页面没有用jquery,因为我想全部在extjs.js处理
例如置放Google +1按钮的code是
(function() {
var po = document.createElement('script'); po.type = 'text/javascript';
po.async = true;
po.src = '
https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
然後把<g:plusone size="medium"></g:plusone>放在任何一个地方都可以
※ 编辑: On1earth 来自: 114.34.70.99 (05/01 23:18)
4F:→ sk1765:你没注意facebook都是把script摆在<body>的最後 所以只要 05/02 11:52
5F:→ sk1765:把整个<script>摆到<body>的最後面 <div>之後 就解决了吧 05/02 11:52
7F:→ xiphoid:复制进extjs.js直接使用 05/02 12:37
to xiphoid大:
我想把ded domready放进我的extjs.js,用匿名函数包起来,不想让外面呼叫它,
function() {
//这里是ded domready的code
})();
可是我在外面还是可以呼叫的到它,请问应该要怎麽做呢?
这几天都在研究它,但是看不懂!function (name, definition){...}这一段的意思
※ 编辑: On1earth 来自: 61.231.222.213 (05/07 01:17)