作者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)