我使用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更改警告来打印数据而不是在弹出窗口中显示它,它似乎不再起作用了。它不打印任何东西。谁能告诉我们原因可能是什么?
提前致谢
答案 0 :(得分: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
元素,它可以是div
或span
或其他任何有父元素的有效子元素。)
请注意,如果您只想附加到文档的底部(相对较少,但嘿),则可以使用document.body
代替parent
:
var p = document.createElement('p');
p.innerHTML = "This is the new content.";
document.body.appendChild(p);
同样,如果你想替换元素的内容,只需获取它的引用(如果元素有ID,使用getElementById
是一种方便的方法,但有其他方式)并更新它,而不是追加它:
var target = document.getElementById('targetId');
target.innerHTML = "This is the <em>updated content</em>.";
更多re document.write
:document.write
实际上写入HTML解析器正在解析的HTML流。当然,一旦页面呈现完成,就不再需要解析HTML流。但上面的DOM方法可用于在呈现页面后操作页面上的内容。
偏离主题:如果您使用像jQuery这样的库,DOM操作和DOM搜索(查找要更新的元素)都变得更容易(特别是跨浏览器更容易) ,Prototype,YUI,Closure或any of several others,它们具有浏览器怪癖的语法糖和解决方法等。
答案 1 :(得分:1)
如果您希望输出测试值。我推荐用于IE的Console.JS和用于Firefox的Firebug。它们支持一个名为console.log()
的函数,它将输出跟踪到调试窗口。