2010-12-21 91 views
0

我使用JavaScript使用JavaScript SDK獲取來自Facebook的一些數據:打印數據,而不是警告

window.fbAsyncInit = function() { 
    FB.init({appId: '111164862286924', status: true, cookie: true, 
      xfbml: true}); 
/****************************************/ 

FB.api('/f8', function(response) { 
    alert(response.company_overview); 
}); 

/****************************************/ 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 

此代碼工作正常,但如果我改變與documen.write警報打印的數據,而不是顯示它的在彈出窗口內,它似乎不再工作。它不打印任何東西。任何人都可以請告訴可能是什麼原因?

在此先感謝

回答

3

不能使用document.write後頁面的初始解析完成。幸運的是,沒有特別的理由。

如果您在頁面上的元素,並要追加到它,你可以這樣做:

var parent = document.getElementById('theId'); 
var p = document.createElement('p'); 
p.innerHTML = "This is the <em>new content</em>."; 
parent.appendChild(p); 

Live example(它不必是一個p元素,它可以是一個divspan或其他任何的父元素的有效孩子。)

請注意,如果你只是想添加到文檔(比較少見,但嘿)的底部,你可以代替parent使用document.body

var p = document.createElement('p'); 
p.innerHTML = "This is the new content."; 
document.body.appendChild(p); 

同樣,如果你想取代元素的含量,只得到它的一個引用(使用getElementById是如果該元素具有一個ID的便利方式,但也有其他的方式),並更新,而不是附加給它:

var target = document.getElementById('targetId'); 
target.innerHTML = "This is the <em>updated content</em>."; 

更重document.writedocument.write實際寫入HTML流由HTML解析器解析。當然,一旦頁面渲染完成,就不再有HTML流被解析。但是,上面的DOM方法可用於在頁面呈現後處理頁面上的內容。


題外話:DOM操作和DOM搜索(尋找元素更新)都變得更容易(尤其是更容易的跨瀏覽器),如果你使用一個庫像jQueryPrototypeYUIClosureany of several others這將有語法糖和瀏覽器偏心率的解決方法等。

1

如果您正在尋找只輸出測試值。我推薦使用Console.JS for IE和Firebug for Firefox。它們支持一個名爲console.log()的函數,它將跟蹤輸出到調試窗口。