Распечатать данные вместо предупреждения
Я использую JavaScript, чтобы получить некоторые данные из Facebook, используя JavaScript SDK:
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);
}());
Этот код работает нормально, но если я изменил оповещение с documentmen.write, чтобы напечатать данные вместо того, чтобы показывать их во всплывающем окне, это, похоже, больше не работает. Это ничего не печатает. Может кто-нибудь сказать, пожалуйста, в чем может быть причина?
заранее спасибо
2 ответа
Вы не можете использовать document.write
после первоначального разбора страницы завершена. К счастью, нет особой причины.
Если у вас есть элемент на странице, и вы хотите добавить к нему, вы можете сделать это:
var parent = document.getElementById('theId');
var p = document.createElement('p');
p.innerHTML = "This is the <em>new content</em>.";
parent.appendChild(p);
Живой пример (Это не должно быть p
элемент, это может быть div
или же span
или что-то еще, что является допустимым дочерним элементом родительского элемента.)
Обратите внимание, что если вы просто хотите добавить в конец документа (относительно редко, но эй), вы можете просто использовать document.body
на месте parent
:
var p = document.createElement('p');
p.innerHTML = "This is the new content.";
document.body.appendChild(p);
Точно так же, если вы хотите заменить содержимое элемента, просто получите ссылку на него (используя getElementById
это удобный способ, если элемент имеет идентификатор, но есть и другие способы) и обновлять его, а не добавлять к нему:
var target = document.getElementById('targetId');
target.innerHTML = "This is the <em>updated content</em>.";
Еще раз document.write
: document.write
фактически записывает в поток HTML, анализируемый анализатором HTML. Естественно, когда рендеринг страницы завершен, поток HTML больше не анализируется. Но описанные выше методы DOM доступны для манипулирования контентом на странице после ее отображения.
Не по теме: манипулирование DOM и поиск DOM (поиск элементов для обновления) упрощаются (и, в частности, упрощаются в кросс-браузерном режиме), если вы используете библиотеку, такую как jQuery, Prototype, YUI, Closure или любую из нескольких других, которые будут иметь синтаксический сахар и обходные пути для эксцентричности браузера и т. д.
Если вы хотите просто вывести значение для тестирования. Я рекомендую Console.JS для IE и Firebug для Firefox. Они поддерживают функцию под названием console.log()
который будет отслеживать вывод в окно отладки.