Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Пример 22.4. Модуль поиска на сайте Twitter с помощью метода

postMessage

<!DOCTYPE html>

<! —

Это модуль поиска на сайте Twitter. Модуль можно подключить к любой странице внутри элемента <iframe> и запросить его выполнить поиск, отправив ему строку запроса с помощью метода postMessage. Поскольку модуль подключается в элементе <iframe>, а не <script>, он не сможет получить доступ к содержимому вмещающего документа.

– ->

<html>

<head>

<style>body { font: 9pt sans-serif: }</style>

<!-- Подключить библиотеку jQuery ради ее утилиты jQuery.getJSON -->

<script src=" http://code.jquery.com/jquery-1.4.4.min.js"/></script >

<script>

// Можно было бы просто использовать свойство window.onmessage,

// но некоторые старые броузеры (такие как Firefox 3) не поддерживают его,

// поэтому обработчик устанавливается таким способом,

if (window.addEventListener)

window.addEventListener("message", handleMessage, false);

else

window.attachEvent("onmessage", handleMessage); // Для IE8

function handleMessage(e) {

// Нас не волнует происхождение документа, отправившего сообщение:

// мы готовы выполнить поиск на сайте Twitter для любой страницы.

// Однако сообщение должно поступить от окна, вмещающего этот модуль,

if (е.source !== window.parent) return;

var searchterm = e.data; // Это фраза, которую требуется отыскать

// С помощью утилит поддержки Ajax из библиотеки jQuery и прикладного

// интерфейса Twitter отыскать сообщения, соответствующие фразе.

jQuery.getJS0N(" http://search.twitter.com/search.json?callback= ?",

{ q: searchterm },

function(data) { // Вызывается с результатами запроса

var tweets = data.results;

// Создать HTML-документ для отображения результатов

var escaped = searchterm.replace("<", "&lt;”);

var html = "<h2>" + escaped + "</h2>";

if (tweets.length == 0) {

html += "No tweets found";

}

else {

html += "<dl>"; // <dl> list of
results

for(var і = 0; і < tweets.length; i++) {

var tweet = tweets[i];

var text = tweet.text;

var from = tweet.from_user;

var tweeturl = " http://twitter.eom/#!/ " + from +

"/status/" + tweet.id_str;

html += "<dt><a target='_blank‘ href="#"text_code"> tweeturl + "'>" + tweet.from_user +

"</a></dt><dd>" + tweet.text + "</dd>";

}

html += "</dl>";

}

// Вставить документ в <iframe>

document.body.innerHTML = html;

});

}

$(function {

// Сообщить вмещающему документу, что модуль готов к поиску. Вмещающий документ

// не может отправлять модулю сообщения до получения этого сообщения, потому что

// модуль еще не готов принимать сообщения. Вмещающий документ может просто

// дождаться события onload, чтобы определить момент, кода будут загружены

Поделиться:
Популярные книги

Выйду замуж за спасателя

Рам Янка
1. Спасатели
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Выйду замуж за спасателя

Снайпер

Поселягин Владимир Геннадьевич
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Снайпер

Свет горизонта

BlackRaven
1. Свет горизонта
Фантастика:
фэнтези
6.00
рейтинг книги
Свет горизонта

Бастард Императора. Том 15

Орлов Андрей Юрьевич
15. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 15

Руководство по системной поведенченской психотерапии

Курпатов Андрей Владимирович
Научно-образовательная:
психотерапия и консультирование
5.00
рейтинг книги
Руководство по системной поведенченской психотерапии

Дракон

Бубела Олег Николаевич
5. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.31
рейтинг книги
Дракон

Самые знаменитые произведения писателя в одном томе

Брэдбери Рэй Дуглас
Фантастика:
фантастика: прочее
4.00
рейтинг книги
Самые знаменитые произведения писателя в одном томе

Личный аптекарь императора. Том 6

Карелин Сергей Витальевич
6. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 6

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Дважды одаренный. Том VIII

Тарс Элиан
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Дважды одаренный. Том VIII

Города в полете

Блиш Джеймс Бенджамин
Фантастика:
космическая фантастика
4.25
рейтинг книги
Города в полете

Вперед в прошлое 12

Ратманов Денис
12. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое 12

Двойник Короля 5

Скабер Артемий
5. Двойник Короля
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Двойник Короля 5