powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Кроссбраузерная заморочка с XML
25 сообщений из 47, страница 1 из 2
Кроссбраузерная заморочка с XML
    #36439557
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем мое почтение и благодарность авансом.

Пишу JS, который загружает XML из файла, расположенного на сервере. На ИЭ всё работает. При попытке приспособить программу к другим браузерам... В общем, вы понимаете.

1. Пишу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var xhttp;
if (window.XMLHttpRequest) xhttp=new XMLHttpRequest();
else xhttp=new ActiveXObject("Microsoft.XMLHTTP");
//в двух предыдущих строчках проверил, что срабатывает именно if, а не else
xhttp.open("GET","builder.xml",false);
xhttp.send("");
xml=xhttp.responseXML;
var oModel=xml.selectSingleNode(...);

Это работает в ИЭ и даже в Опере. В ФФ на последней строке получаю ошибку:

xml.selectSingleNode is not a function

2. Пишу (на случай если юзер запускает тот же скрипт на собственном диске без http):

Код: plaintext
var fso = new ActiveXObject("Scripting.FileSystemObject");

Работает только в ИЭ. В Опере и ФФ получаю ошибки разного текста, но с одинаковым смыслом - что слово ActiveXObject не понято.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36439576
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

Саныч, с активеХ работает только один ИЕ.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36439577
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

Пардон, сморозил неглядя.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36439640
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36439762
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч http://www.sql.ru/forum/actualthread.aspx?tid=347207
Спасибо, но пока слабо понятно. Прошел по ссылке . Вместо
xml.selectSingleNode("//all/"+s)
написал так:
document.evaluate("//all/"+s,xml,null,XPathResult.ANY_TYPE,null)
Получил DOMException без конкретизации. Я и сам понимаю, что написал плохо, но по-другому пока не умею.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36439780
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал через getElementsByTagName. Например:
xml.getElementsByTagName("all").getElementsByTagName(s)
xml.getElementsByTagName("all").item(s)
xml.getElementsByTagName("all")(0).getElementsByTagName(s)(0)
Однако здесь тоже правильного варианта пока не нащупал.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36440214
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Санычdocument.evaluate("//all/"+s,xml,null,XPathResult.ANY_TYPE,null)
Исправил ошибку:
document.evaluate("//all/"+s,xml,xml.documentElement,XPathResult.ANY_TYPE,null)
Лучше не стало. Есть еще что-то, что я не умею исправить.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36440730
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
Владимир СанычПопробовал через getElementsByTagName. Например:
xml.getElementsByTagName("all").getElementsByTagName(s)
xml.getElementsByTagName("all").item(s)
xml.getElementsByTagName("all")(0).getElementsByTagName(s)(0)
Однако здесь тоже правильного варианта пока не нащупал.


Код: plaintext
xml.getElementsByTagName("all")[ 0 ].childNodes[ 0 ].nodeValue;
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36440733
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36440893
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
Вот, набросал пример для currency.xml

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Currency Exchange Rates</title>
<style type="text/css">
body {
	margin-top: 30px;
	background-color: #EFEFEF;
}
table {
	font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
	font-size: 13px;
	margin: auto;
	margin-top: 10px;
	width: 450px;
	text-align: left;
	border-collapse: collapse;
}
th {
	font-size: 14px;
	font-weight: bold;
	text-align: left;
	padding: 8px;
	background: #b9c9fe;
	border-top: 2px solid #aabcfe;
	border-bottom: 2px solid #aabcfe;
	color: # 039 ;
}
td {
	padding: 8px;
	background: #e8edff;
	border-bottom: 1px solid #fff;
	color: # 669 ;
	border-top: 1px solid transparent;
}
tr:hover td {
	background: #d0dafd;
	color: # 339 ;
}
div {
	font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
	font-size: 18px;
	color: navy;
	background: #e8edff;
	width: 490px;
	text-align: center;
	margin: auto;
	padding-top: 10px;
	padding-bottom: 20px;
	border: 1px solid #aabcfe;
}
img {
	margin: auto;
}
</style>
<script type="text/javascript">

if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest()
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
xhttp.open("GET","currency.xml",false);
xhttp.send("");
xmlDoc=xhttp.responseXML;
 
document.write("<div>");
document.write("<span>Bank of Israel - Currency exchange rates</span><br />");
document.write("<span>");
var x=xmlDoc.getElementsByTagName("LAST_UPDATE");
document.write("Last Update: " + x[ 0 ].childNodes[ 0 ].nodeValue);
document.write("</span><br />");
document.write("<table>");
document.write("<tr><th>NAME</th><th>UNIT</th><th>CODE</th><th>COUNTRY</th><th>RATE</th></tr>");
var x=xmlDoc.getElementsByTagName("CURRENCY");
for (i= 0 ;i<x.length;i++)
  { 
  document.write("<tr><td>");
  document.write(x[i].getElementsByTagName("NAME")[ 0 ].childNodes[ 0 ].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("UNIT")[ 0 ].childNodes[ 0 ].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("CURRENCYCODE")[ 0 ].childNodes[ 0 ].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("COUNTRY")[ 0 ].childNodes[ 0 ].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("RATE")[ 0 ].childNodes[ 0 ].nodeValue);
  document.write("</td></tr>");
  }
document.write("</table>");
document.write("</div>");
</script>
</head>

<body>

</body>

</html>
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36440904
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, вечером проверю дома.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441235
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%%
Код: plaintext
xml.getElementsByTagName("all")[ 0 ].childNodes[ 0 ].nodeValue;

Да, здесь я со скобками мог бы и сам сообразить. Работает! Иду проверять дальше...

Слушай, я у себя на сайте тебе благодарность поставлю. Там есть мемориальная доска, и это непорядок, что ты не там.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441255
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%% Load an XML File - A Cross browser Example
А... А почему в кроссбраузерном примере по-прежнему ActiveXObject? На мой первый вопрос ответ получен, оно работает. Второй вопрос, увы, пока остался...
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441261
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточню вопрос. В моем коде есть три вот таких куска:

Код: plaintext
var fso = new ActiveXObject("Scripting.FileSystemObject");
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if (window.DOMParser) {
	var parser=new DOMParser();
	xml=parser.parseFromString(b,"text/xml");
} else {
	xml=new ActiveXObject("Microsoft.XMLDOM");
	xml.async="false";
	xml.loadXML(b);
}
Код: plaintext
1.
2.
3.
if (window.XMLHttpRequest)
	xhttp=new XMLHttpRequest();
else
	xhttp=new ActiveXObject("Microsoft.XMLHTTP");

Во втором и третьем кусках есть иф, который, как я понимаю, если мы не в ИЭ, дает true и обходит обращение к ActiveXObject. А вот в первом куске такого ифа нет, и как это обойти - пока непонятно...
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441263
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

Как вариант, вообще-то я так именно поступаю, на сервере конвертировать XML->JSON. В яваскрипте работать с JSON. Если надо конвертировать или на клиенте или на сервере JSON->XML.
ПС. В гугле конвертилок - как грязи.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441273
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, с XMLем уже нет проблем, проверено. Осталась только проблема с чтением файла с диска без http.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441287
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
Владимир СанычА почему в кроссбраузерном примере по-прежнему ActiveXObject?

Потому что IE6 до сих пор жив и все так же невменяем.

Владимир Саныч Второй вопрос это - Владимир Саныч В Опере и ФФ получаю ошибки разного текста, но с одинаковым смыслом - что слово ActiveXObject не понято ?

Так ответ был дан - только IE поддерживает ActiveX.

Встречный вопрос - если "юзер запускает тот же скрипт на собственном диске без http" и у него операционная система отличная от windows?

Если же в расчет принимается только windows, то для локального запуска скрипта можно сделать HTA - и давать его скачать желающим. IE в windows неистребим (почти).

авторСлушай, я у себя на сайте тебе благодарность поставлю. Там есть мемориальная доска, и это непорядок, что ты не там.

Убёг фотографироваться на памятник себе
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441308
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%%Так ответ был дан - только IE поддерживает ActiveX.
Чьёрт побьяри (С). Я думал, что мой вопрос понятен. Уточню: я хочу узнать, как добиться, чтобы оно работало.

%%Встречный вопрос - если "юзер запускает тот же скрипт на собственном диске без http" и у него операционная система отличная от windows?
Мне нравится этот вопрос. А ответ на него есть?

%%Если же в расчет принимается только windows, то для локального запуска скрипта можно сделать HTA - и давать его скачать желающим.
И чем это поможет?
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441338
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
Владимир СанычЧьёрт побьяри (С). Я думал, что мой вопрос понятен. Уточню: я хочу узнать, как добиться, чтобы оно работало.

Да никак, Чьёрт побьяри (С)(С)! вэб-приложение должно работать с файлами на сервре. С локальными файлами должно работать локальное приложение. ActiveX (закрытая устаревшая технология разработанная и поддерживаемая только микрософтом) - забыть как страшный сон - он существует for backward compatibility only - и как огромная дыра в системе безопасности.

Владимир СанычМне нравится этот вопрос. А ответ на него есть?

Есть. Написать локальное кроссплатформенное приложение. Могу предложить python как средство разработки.

Владимир СанычИ чем это поможет?

Берем твой чудо-скрипт (в надлежащем html-css обрамлении), добавляем в заголовок HTA:Application, сохраняем c расширением hta, выкладываем на сервер, на сайте ставим кнопочку "скачать локальную версию" - получаем - "юзер запускает тот же скрипт на собственном диске без http"
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441340
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%%...добавляем в заголовок HTA:Application, сохраняем c расширением hta, выкладываем на сервер, на сайте ставим кнопочку "скачать локальную версию" - получаем - "юзер запускает тот же скрипт на собственном диске без http"
ИЕ онли, опять же.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441352
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
Разумеется. Это уточнение было в предыдущем посте:

яЕсли же в расчет принимается только windows, то для локального запуска скрипта можно сделать HTA - и давать его скачать желающим. IE в windows неистребим (почти).
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441433
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%%Могу предложить python как средство разработки.
Да я бы и на VB написал. Но ведь потом начнутся вопросы, как его вызвать.

%%Владимир СанычИ чем это поможет?
Берем твой чудо-скрипт...
Я имел в виду, чем поможет с моим нерешенным вопросом.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441515
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
VB - это не кроссплатформенно. Под windows у тебя и так есть нормальное решение - HTA с тем же скриптом внутри.
Владимир СанычЯ имел в виду, чем поможет с моим нерешенным вопросом.

Тем, что решит этот самый вопрос - используя твой скрипт юзер сможет работать локально с локальными файлами.
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441679
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под Windows в ИЭ у меня и так работает! Мне не надо, чтобы работало там же еще раз. Мне надо, чтобы работало НЕ в ИЭ (и, если возможно, не под Windows).
...
Рейтинг: 0 / 0
Кроссбраузерная заморочка с XML
    #36441727
%%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
%%
Гость
Владимир СанычПод Windows в ИЭ у меня и так работает!

А у меня - нет. И не будет. И у любого нормального пользователя - не будет. Разрешать, чтоб скрипты запущеные в браузере, имели доступ к локальной файловой системе - это самоубийство. Уж лучше сразу - кувалдой по компику.

Мне надо, чтобы работало НЕ в ИЭ (и, если возможно, не под Windows)

К счастью - это невозможно. Но если, например, найдешь способ сделать это из Chrome - Google заплатит тебе 1337$ - http://www.computerworld.com/s/article/9150011/Google_to_pay_bounties_for_Chrome_browser_bugs

Кстати, про IE6 (с уходом в небытие коего, уйдет и ActiveX - по крайней мере из web)
...
Рейтинг: 0 / 0
25 сообщений из 47, страница 1 из 2
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Кроссбраузерная заморочка с XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]