Тег сценария JavaScript в строке JavaScript - PullRequest
1 голос
/ 01 июня 2011

У меня та же проблема, что и здесь:

Тег скрипта в строке JavaScript

Однако я не могу решить проблему с предложенными решениями. Я использую плагин datatables для jquery. Я пробовал разные решения из вышеупомянутой темы, но ни один не работает. Я получаю сообщение об ошибке «$ is notfined». Если я устанавливаю var html как «test», он работает нормально. Сценарий в String вставляет элемент управления ActiveX (IE) или плагин (FF) и отображает данные из базы данных. В следующем коде var html как-то ломает скрипт:

function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {         
    var dataURL = "'data:chemical/smiles," + aData[0] + "'";
    var html = '<script type="text/javascript">'
        + 'cd_insertObject("chemical/x-daylight-smiles", 182, 172,'
        + '"CDCtrl' + iDisplayIndexFull + '","","True","False","True",'
        + 'dataurl='+ dataURL + ');</scr' + 'ipt>'; 

    $('td:eq(0)', nRow).html(html); // here $ causes an error       
    return nRow;
}

Обратите внимание, что я также пытался экранировать все <и> также в открывающем теге скрипта. Та же проблема. Есть идеи как решить?

EDIT:

Нашел решение, но не могу ответить на свой вопрос, вот оно:

Функция jQuerys .html () удаляет теги скрипта. Я обнаружил, что в комментариях документация для .html ().

Другая проблема заключается в том, что сторонняя функция cd_insertObject использует document.write ().

Мое решение было скопировать + вставить cd_insertObject, но вместо использования записи документа я возвращаю строку, а затем помещаю эту строку в

$('td:eq(0)', nRow).html(html);

Ответы [ 2 ]

2 голосов
/ 06 сентября 2012

Попробуйте, что было успешно в Firefox

var scr="cd_insertObject('chemical/x-cdx',600,400,'rxncdxd','cdxfile.cdx',true,true)";
$('#deneme').html(eval(scr));
2 голосов
/ 01 июня 2011

Эта ошибка не имеет ничего общего с вашей попыткой вставить тег . Ошибка «$ не определена» означает, что «$» не определена, она не существует, поэтому вы не можете вызвать ее через $()

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

Также возможно, что вы использовали <a href="http://api.jquery.com/jQuery.noConflict/" rel="nofollow">jQuery.noConflict()</a>, в результате чего $ больше не ссылается на jQuery. Другая возможность заключается в том, что между включением jQuery и этого кода есть код, который переопределяет $ на undefined:

$ = undefined;
...