iT邦幫忙

0

如何用javascript串流執行?

怎樣可以讓 javascript
在一個網頁不變動的情況之下
源源不絕的執行外部的script程式呢?
或網頁內容後來加上的程式呢?

舉個例子
這是一個在視窗內的
<script>
window.alert
</script>
這是在陣列跟字串內的
arr=["<script>window.alert</script>"]
str="<script>window.alert</script>"
當我們用 docu..getbyid = arr或str
的時候 這個 script 並不會執行

可是當這個字串或陣列 是<b> word </b>
她就會轉為 html的情況 等於執行了html碼

script 要怎樣輸入到網頁中用加進去的方式
讓他執行呢?

假如可以這樣
應該可以開發出像 flash那些遊戲了吧
只要程式能不斷引進
再大的遊戲都能做出來

另外就是 script是引用外部檔案的方式
<SCRIPT language=javascript src="http://.../js.js"></SCRIPT>
這種情況

在視窗都沒有變動的情況下
怎樣能讓他再重新引進依次
也就是 我只要改這個引進檔內容
在網頁不變動 不reload之下
一樣可以達到串流的效果

感覺是不太可能
畢竟 程式都每個部份安排好才下去執行

跑進去新的東西 恐怕js會精神錯亂?

wordsmith iT邦高手 1 級 ‧ 2013-01-02 12:42:28 檢舉
js是可以在執行期間動態載入,可以用建立script的dom元素,然後寫入js的內容,或是從外部載入js。

舉個簡單的例子:

<script>
$(function(){
  alert("hi");    
  var theScript = $('<script>');  
  theScript.text('alert("another hi")');
  $("body").append(theScript);
})
</script>


上面的例子用了jquery,動態的新增一個script的tag,然後塞入另一個script的內容,執行之後會跳出兩次alert,一次是原本在script中的,另一次是用jquery動態加入的。

不過動態載入js,會有許多細節要注意,例如相依性的問題,非同步存取的問題。所以如果可以在一開始,就載入所需的js,其實問題會比較少。

另外,javascript其實原本就有一些遊戲的引擎,例如impactjscrafty,這些都是既有的solution。只是就工具面來說,沒有像Flash那麼全面而已。
4
josephj
iT邦新手 5 級 ‧ 2013-03-31 19:12:13
最佳解答

# 每個瀏覽器都可用的作法:

說穿了就是用 setInterval 去做輪詢 (Polling)、把外部的資料用 XMLHttpRequest / JSONP / Script Tag Hack 的方式給載入。

HTML5 WebSocket 與 Flash

這兩個技術可以建立雙通道,資料可以從 Server 推送給瀏覽器端
比 Polling 來得有效率多了

可以參考我寫的文章「Browser 與 Server 持續同步的作法介紹 (Polling, Comet, Long Polling, WebSocket)」

10
pantc328
iT邦研究生 1 級 ‧ 2013-01-02 13:31:57

朝AJAX研究

10
wiseguy
iT邦超人 1 級 ‧ 2013-01-02 17:58:55

拜一下古哥關於 Comet 這個技術。包含從最早的 AJAX、Long polling、到最新的 HTML5 之 WebSocket。

我要發表回答

立即登入回答