Как получить JavaScript для загрузки другого файла HTML? - PullRequest
1 голос
/ 07 июня 2009

Я пытаюсь создать букмарклет, чтобы при нажатии на него он загружал example.com/yourdata.php в блок div

Как мне получить данные с example.com?

IFRAME? или есть лучшее решение?

Ответы [ 4 ]

2 голосов
/ 07 июня 2009

У вас могут быть проблемы с созданием букмарклета на другой странице, который собирает данные из другого домена (для загрузки в <div /> с помощью Ajax).

Ваш лучший вариант - вставить IFrame с контентом в качестве источника страницы.

Если вы хотите сделать это как очень простой лайтбокс, вы можете сделать что-то вроде этого:

(function() {

    var iFrame = document.createElement('IFRAME');

    iFrame.src = 'http://google.com';
    iFrame.style.cssText = 'display: block; position:absolute; ' 
                         + 'top: 10%; left: 25%; width: 50%; height: 50%';

    document.body.insertBefore(iFrame, document.body.firstChild); 

})();

А вот такой же код в формате букмарклета:

javascript: (function() { var iFrame = document.createElement('IFRAME'); iFrame.src = 'http://google.com'; iFrame.style.cssText = 'display: block; position:absolute; top: 10%; left: 25%; width: 50%; height: 50%'; document.body.insertBefore(iFrame, document.body.firstChild); })();

Вы также можете придать этому стиль гораздо больше, если хотите что-то красивое. Это просто базовый пример того, что возможно. Как сказал другой человек, было бы проще сделать его красивым, загрузив jQuery с помощью Ajax-запроса, но это немного сложнее.

1 голос
/ 07 июня 2009

С Dojo Toolkit вы можете использовать dijit.layout.ContentPane или dojox.layout. ContentPane , чтобы сделать именно то, что вы хотите в одном отдельном div.
Разница между dijit.layout.ContentPane и dojox.layout.ContentPane заключается в том, что вы можете запустить встроенный JavaScript внутри dojox.layout.ContentPane.

1 голос
/ 07 июня 2009

Сделайте AJAX-вызов прямо в вашей закладке, а затем установите innerHTML вашего div в возвращаемое содержимое. Не уверен, есть ли на это ограничения безопасности.

Edit: вы не хотите использовать JQuery, так как вы не можете легко загрузить библиотеку javascript из букмарклета. (Хотя, возможно, вы могли бы получить его через AJAX, а затем проверить его ...)

Вам нужно сделать классический XMLHttpRequest .

Некоторые подробнее здесь .

0 голосов
/ 07 августа 2009

Я обошел ограничение домена, создав на своем сервере функцию php, которая выводит страницу в другом домене. таким образом, javascript считает, что он находится в том же домене, когда я выполняю вызов ajax.updater.

$ sSrcPage = $ _REQUEST ['SrcPage'];

echo file_get_contents ($ sSrcPage, 0);

...