Распечатать данные вместо предупреждения - PullRequest
0 голосов
/ 22 декабря 2010

Я использую 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 ]

3 голосов
/ 22 декабря 2010

Вы не можете использовать 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>.";

Подробнее re document.write: document.write фактически записывает в поток HTML, анализируемый анализатором HTML. Естественно, когда рендеринг страницы завершен, поток HTML больше не анализируется. Но описанные выше методы DOM доступны для манипулирования содержимым страницы после ее отображения.


Не по теме : манипулирование DOM и поиск DOM (поиск элементов для обновления) упрощаются (и, в частности, упрощаются в кросс-браузерном режиме), если вы используете библиотеку, такую ​​как jQuery , Прототип , YUI , Закрытие или любой из нескольких других , которые будут иметь синтаксический сахар и обходные пути для эксцентричности браузера и т. Д.

1 голос
/ 22 декабря 2010

Если вы хотите просто вывести значение для тестирования. Я рекомендую Console.JS для IE и Firebug для Firefox. Они поддерживают функцию с именем console.log(), которая будет отслеживать вывод в окно отладки.

...