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

Пишу 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
29.01.2010, 19:36:07
    #36439576
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Владимир Саныч,

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

Пардон, сморозил неглядя.
...
Рейтинг: 0 / 0
29.01.2010, 20:45:52
    #36439640
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
...
Рейтинг: 0 / 0
29.01.2010, 23:47:10
    #36439762
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Яростный Меч 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
30.01.2010, 00:22:22
    #36439780
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Попробовал через getElementsByTagName. Например:
xml.getElementsByTagName("all").getElementsByTagName(s)
xml.getElementsByTagName("all").item(s)
xml.getElementsByTagName("all")(0).getElementsByTagName(s)(0)
Однако здесь тоже правильного варианта пока не нащупал.
...
Рейтинг: 0 / 0
30.01.2010, 16:41:34
    #36440214
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Владимир Санычdocument.evaluate("//all/"+s,xml,null,XPathResult.ANY_TYPE,null)
Исправил ошибку:
document.evaluate("//all/"+s,xml,xml.documentElement,XPathResult.ANY_TYPE,null)
Лучше не стало. Есть еще что-то, что я не умею исправить.
...
Рейтинг: 0 / 0
31.01.2010, 11:29:25
    #36440730
%%
%%
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Владимир СанычПопробовал через 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
31.01.2010, 11:31:09
    #36440733
%%
%%
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
...
Рейтинг: 0 / 0
31.01.2010, 15:43:33
    #36440893
%%
%%
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Вот, набросал пример для 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
31.01.2010, 16:04:12
    #36440904
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Спасибо, вечером проверю дома.
...
Рейтинг: 0 / 0
31.01.2010, 22:53:31
    #36441235
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
%%
Код: plaintext
xml.getElementsByTagName("all")[ 0 ].childNodes[ 0 ].nodeValue;

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

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

Код: 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
31.01.2010, 23:17:59
    #36441263
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Владимир Саныч,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тем, что решит этот самый вопрос - используя твой скрипт юзер сможет работать локально с локальными файлами.
...
Рейтинг: 0 / 0
01.02.2010, 11:19:42
    #36441679
Владимир Саныч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Под Windows в ИЭ у меня и так работает! Мне не надо, чтобы работало там же еще раз. Мне надо, чтобы работало НЕ в ИЭ (и, если возможно, не под Windows).
...
Рейтинг: 0 / 0
01.02.2010, 11:35:41
    #36441727
%%
%%
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кроссбраузерная заморочка с XML
Владимир СанычПод 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
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Кроссбраузерная заморочка с XML / 25 сообщений из 47, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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