Если вы контролируете данные, то, как вы это делаете, это, пожалуй, лучший способ. Другие ответы здесь имеют свои преимущества, но и все они довольно ошибочны. Например, метод querySelector()
доступен только для гаджетов Windows Desktop, работающих в режиме IE8 на главной машине. Регулярные выражения особенно ненадежны для разбора HTML и не должны использоваться.
Если вы не контролируете данные или данные не передаются по защищенному протоколу, вы должны быть более озабочены безопасностью, чем эстетика кода - вы можете вводить потенциальные угрозы безопасности гаджету и хост-компьютера, вставив в документ неаналитированный HTML-код. Поскольку гаджеты работают с привилегиями пользователя или администратора, очевидным угрозой безопасности является ненадежный источник/MITM инъекции скриптов, оставляя дыру для вредоносных сценариев, чтобы нанести ущерб машине, на которой он работает.
Одним из возможных решений является использование htmlfile
ActiveXObject:
function getElementFromResponse(divId)
{
var h = new ActiveXObject("htmlfile");
h.open();
// disable activex controls
h.parentWindow.ActiveXObject = function() {};
// write the html to the document
h.write(html);
h.close();
return h.getElementById("divID").innerText;
}
Вы также можете использовать метод toStaticHTML()
IE8, но гаджет необходимо будет работать в режиме IE8.
Спасибо! Я всегда забываю, что мне не нужно быть кросс-браузером в гаджетах, поэтому я могу использовать ActiveX. –
@ m6a-uds: Это, вероятно, самое большое преимущество разработки гаджетов и самого большого подходящего использования для собственных функций IE. Некоторые из материалов, которые я встроил в гаджеты, не имели бы шансов работать в другом браузере :-) –