Escape заключает в кавычки в JavaScript

Я произвожу значения от базы данных (это не действительно открыто для общедоступной записи, но это открыто для записи пользователем в компании - значение, я не волнуюсь по поводу XSS.)

Я пытаюсь произвести тег как это:

Click Me

ОПИСАНИЕ является на самом деле значением от базы данных, которая является чем-то вроде этого:

Prelim Assess "Mini" Report

Я попытался заменить "\", но независимо от того, что я пробую, Firefox продолжает обрубать мой вызов JavaScript после пространства после того, как слово Оценивает, и это вызывает все виды проблем.

Я должен bemissing очевидный ответ, но ни за что в жизни я не могу понять это.

Кто-либо хочет указать на мой идиотизм?

Вот вся страница HTML (это будет страница ASP.NET в конечном счете, но для решения этого, я вынул все остальное кроме проблемного кода),


    
        edit
    

203
задан Peter Mortensen 4 May 2015 в 07:13
поделиться

5 ответов

Для очистки символов двойной кавычки необходимо экранировать записываемую строку в DoEdit. Они приводят к преждевременному закрытию HTML-атрибута click.

Использование экранирующего символа JavaScript, \, не является достаточным в HTML-контексте. Необходимо заменить двойную кавычку на правильное представление сущности XML, ".

.
203
ответ дан 23 November 2019 в 04:57
поделиться

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

<a href="#" onclick='DoEdit("Preliminary Assessment \"Mini\""); return false;'>edit</a>
12
ответ дан 23 November 2019 в 04:57
поделиться
<html>
    <body>
        <a href="#" onclick="DoEdit('Preliminary Assessment &quot;Mini&quot;'); return false;">edit</a>
    </body>
</html>

Должен сделать трюк.

33
ответ дан 23 November 2019 в 04:57
поделиться

Я сделал образец, используя jQuery

var descr = 'test"inside"outside';
$(function(){
   $("#div1").append('<a href="#" onclick="DoEdit(descr);">Click Me</a>');       
});

function DoEdit(desc)
{
    alert ( desc );
}

, и это работает в Internet Explorer и Firefox

.
1
ответ дан 23 November 2019 в 04:57
поделиться
[

] Избавься от пробелов. Мне кажется, что Firefox принимает три аргумента вместо одного. []  [] - неразрывной символ пробела. Даже если это не вся проблема, это все равно может быть хорошей идеей. [

]
0
ответ дан 23 November 2019 в 04:57
поделиться
Другие вопросы по тегам:

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