WRFan
Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: А можно подробнее. Или ссылочку. Можно в личку. | Код: <SCRIPT LANGUAGE="vbscript"> Set XMLHTTP = CreateObject("Microsoft.XMLHTTP") set ADOStream = CreateObject("Adodb.Stream") XMLHTTP.open "GET", "http://www.desperateblog.com/wp-content/uploads/2006/05/hilary-duff-in-paris-airport-2.jpg", False XMLHTTP.Send ADOStream.type = 1 'adTypeBinary ADOStream.open ADOStream.write XMLHTTP.responseBody dstfile2 = "c:\hilary-duff-in-paris-airport-2.jpg" ADOStream.savetofile dstfile2, 2 'adSaveCreateOverWrite ADOStream.close </SCRIPT> | тоже самое конечно работает и с JScript-ом, только синтаксис несколько отличается, например объекты вызываются через "new ActiveXObject" и т.д. инфа: XMLHttpRequest Object: http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_xmlhttprequest.asp ADO Objects and Interfaces: http://msdn.microsoft.com/library/en-us/ado270/htm/mdmscadoobjects.asp?frame=true Кстати, аяксная замена отдельных XML элементов не представляет проблем. Но с полной заменой innerHTML страницы, т.е. одного документа другим БЕЗ location.replace-а документа проблема в том, что CSS стили не изменяются, а перенимаются из предыдущего документа, даже если убить STYLE элемент страницы ПОЛНОСТьЮ! единственное решение - убить BODY элемент страницы, превратить страницу в FRAMESET (документ не может содержать одновременно фреймсет и body) и динамически создать FRAME с содержанием новой страницы. таким образом, документ остаётся прежним, только фрейм меняется. Вот пример IE bookmarklet-а, который открывает новый фрейм или картинку в том же самом документе. картинка вставляется в document.body (предварительно старая картинка убивается через removeNode), а настоящие страницы вставляются в новосозданный фрейм. Microsoft.XMLHTTP объект используется лишь для проверки ResponseHeader-а, всё остальное браузер и без него делает: сначала создаём bookmarklet, который вписывает новый скрипт в HTML элемент документа: Код: javascript:(function(){var script=document.createElement('script'); script.src='file://localhost/PathTo/Surf+.js'; document.getElementsByTagName('HTML')[0].appendChild(script);})() | Затем создаём сам скрипт: слишком длинный, чтобы здесь писать, взгляните тут: http://home.arcor.de/wrfan/files/XMLHTTP.js с помощью XMLHTTP.responseText-а можно конечно заменить innerHTML BODY элемента: Код: XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP") XMLHTTP.open ("GET", "http://www.whatever.com/whatever.html", false) XMLHTTP.send(); BODY=document.getElementsByTagName('BODY')[0] BODY.innerHTML = "" BODY.innerHTML = XMLHTTP.responseText | но тогда многие страницы отображаются неправильно, как я уже писал наверху. так что у аякса тоже есть свои границы, всё зависит от того, что именно динамически вставляется в документ | Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 16:36 26-01-2007 | Исправлено: WRFan, 16:37 26-01-2007 |
|