Как я ввожу JavaScript к странице на IE 8?

"SET @sql = N ', если не существует (выберите * из sys.sql_logins, где name = @Databaseowner)' + N 'CREATE LOGIN' + QUOTENAME (@Databaseowner) + N '' 'С ПАРОЛЕ =' + QUOTENAME (@Databaseownerpass, '' '') + N ';'; "

как добавить check_policy = off в строке выше?

6
задан Li357 14 December 2017 в 03:50
поделиться

8 ответов

Вам, возможно, понадобится к оценке содержание тега script. Это потребовало бы, чтобы парсинг нашел сценарии в Вашем jsVar и оценку (whatsBetweenTheScriptTags).

1
ответ дан 8 December 2019 в 14:47
поделиться

Так как IE отказывается вставлять содержание по умолчанию, необходимо будет выполнить его сами, но можно, по крайней мере, обмануть IE в выполнение парсинга для Вас.

Просто используйте string.replace() подкачивать весь <script> теги для <textarea class="myScript" style="display:none">, сохранение содержания. Затем засуньте результат в innerHTML из отделения.

После того, как это сделано, можно использовать

div.getElementsByTagName("textarea") 

получить все текстовые области, цикл через них и искать Ваш класс маркера ("myScript" в этом случае), и также eval(textarea.value) или (new Function(textarea.value))() те Вы заботитесь о.

1
ответ дан 8 December 2019 в 14:47
поделиться

Это - то, как мы сделали это на нашем сайте приблизительно год назад для получения его работающий в IE. Вот шаги:

  • добавьте HTML к висячей строке элемент DOM
  • ищите узел висячей строки теги script (orphan.getElementsByTagName)
  • доберитесь код от тех узлов сценария (сохраните на потом), и затем удалите их из висячей строки
  • добавьте остаток HTML, который находится в висячей строке, и добавьте его к заполнителю (placeholder.innerHTML = orphan.innerHTML)
  • создайте элемент сценария и добавьте сохраненный код к нему (scriptElem.text = 'предупреждение ("мой код")';)
  • затем добавьте элемент сценария к DOM (предпочтительно голова), затем удалите его
function set_html( id, html ) {
    // create orphan element set HTML to
    var orphNode = document.createElement('div');
    orphNode.innerHTML = html;

    // get the script nodes, add them into an arrary, and remove them from orphan node
    var scriptNodes = orphNode.getElementsByTagName('script');
    var scripts = [];
    while(scriptNodes.length) {
        // push into script array
        var node = scriptNodes[0];
        scripts.push(node.text);

        // then remove it
        node.parentNode.removeChild(node);
    }

    // add html to place holder element (note: we are adding the html before we execute the scripts)
    document.getElementById(id).innerHTML = orphNode.innerHTML;

    // execute stored scripts
    var head = document.getElementsByTagName('head')[0];
    while(scripts.length) {
        // create script node
        var scriptNode = document.createElement('script');
        scriptNode.type = 'text/javascript';
        scriptNode.text = scripts.shift(); // add the code to the script node
        head.appendChild(scriptNode); // add it to the page
        head.removeChild(scriptNode); // then remove it
    }   
}

set_html('ph', 'this is my html.  alert("alert");');
4
ответ дан 8 December 2019 в 14:47
поделиться

Я не уверен в MooTools, но Вы попробовали innerHTML?

document.getElementById ("заполнитель") .innerHTML = jsVar;

1
ответ дан 8 December 2019 в 14:47
поделиться

Это сообщение MSDN конкретно обращается, как использовать innerHTML для вставки JavaScript в страницу. Вы правы: IE действительно считает это проблемой безопасности, поэтому требует, чтобы Вы перешли через определенные обручи для введения сценария..., по-видимому, хакеры могут прочитать это сообщение MSDN, а также мы можем, таким образом, я в замешательстве относительно того, почему MS считает этот дополнительный слой косвенности "безопасным", но я отступаю.

Из статьи MSDN:

<HTML>
<SCRIPT>
function insertScript(){
    var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>";
    var sScript="<SCRIPT DEFER>";
    sScript = sScript + "function go2(){ alert('Hello from inserted script.') }";
    sScript = sScript + "</SCRIPT" + ">";
    ScriptDiv.innerHTML = sHTML + sScript;
}    
</SCRIPT>
<BODY onload="insertScript();">
    <DIV ID="ScriptDiv"></DIV>
</BODY>
</HTML>

Если вообще возможный, можно хотеть рассмотреть использование a document.write введенный сценарий, загружающий тег, чтобы увеличить безопасность и уменьшить несовместимость перекрестного браузера. Я понимаю, что это не может быть возможно, но это достойно рассмотрения.

5
ответ дан 8 December 2019 в 14:47
поделиться

Я никогда не пробовал его, это просто прибыло по моему мнению... Можете Вы пробовать следующее:

var script = document.createElement('script');
script.type = 'text/javascript';

script.innerHTML = '//javascript code here'; // not sure if it works
// OR
script.innerText = '//javascript code here'; // not sure if it works
// OR
script.src = 'my_javascript_file.js';

document.getElementById('placeholder').appendChild(script);

Можно использовать ту же технику (DOM) для вставки разметки HTML.

1
ответ дан 8 December 2019 в 14:47
поделиться

Когда Вы говорите, что это "работает" в тех других браузерах, сделайте Вы подразумеваете, что добираетесь alert всплывающее сообщение, или делают Вас, просто означают <script> тег превращает его в дерево DOM?

Если Ваша цель - первый, поймите что поведение введения HTML со встроенным <script> очень зависимо от браузера. Например, в последнем MooTools я могу попробовать:

$(element).set('html', '<strong>Foo</strong><script>alert(3)</script>')

и я не получаю всплывающее окно, не в IE (7), не в FF (3) (однако, я действительно добираюсь <script> узел в DOM успешно). Получить его к alert во всех браузерах необходимо сделать, как этот ответ делает.

0
ответ дан 8 December 2019 в 14:47
поделиться

Добавьте его в webconfig

add verb = "GET, HEAD" path = "ChartImg.axd" type = "System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System. Web.DataVisualization, Версия = 3.5.0.0, Культура = нейтральный, PublicKeyToken = 31bf3856ad364e35 "

Спасибо

Basanth

Вы используете фреймворк , а не , чтобы заново изобретать велосипед ...

Что касается «другого» контента, как вы его получаете? если через класс Request, он может делать то, что вы хотите, используя следующие параметры:

{
    update: $("targetId"),
    evalScripts: true,
    evalResponse: false
}
1
ответ дан 8 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: