Я произвожу значения от базы данных (это не действительно открыто для общедоступной записи, но это открыто для записи пользователем в компании - значение, я не волнуюсь по поводу XSS.)
Я пытаюсь произвести тег как это:
Click Me
ОПИСАНИЕ является на самом деле значением от базы данных, которая является чем-то вроде этого:
Prelim Assess "Mini" Report
Я попытался заменить "\", но независимо от того, что я пробую, Firefox продолжает обрубать мой вызов JavaScript после пространства после того, как слово Оценивает, и это вызывает все виды проблем.
Я должен bemissing очевидный ответ, но ни за что в жизни я не могу понять это.
Кто-либо хочет указать на мой идиотизм?
Вот вся страница HTML (это будет страница ASP.NET в конечном счете, но для решения этого, я вынул все остальное кроме проблемного кода),
edit
Для очистки символов двойной кавычки необходимо экранировать записываемую строку в DoEdit
. Они приводят к преждевременному закрытию HTML-атрибута click
.
Использование экранирующего символа JavaScript, \
, не является достаточным в HTML-контексте. Необходимо заменить двойную кавычку на правильное представление сущности XML, "
.
Проблема в том, что HTML не распознает экранирующий символ. Вы можете обойти это, используя одинарные кавычки для атрибута HTML и двойные кавычки для клика.
<a href="#" onclick='DoEdit("Preliminary Assessment \"Mini\""); return false;'>edit</a>
<html>
<body>
<a href="#" onclick="DoEdit('Preliminary Assessment "Mini"'); return false;">edit</a>
</body>
</html>
Должен сделать трюк.
Я сделал образец, используя 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
.] Избавься от пробелов. Мне кажется, что Firefox принимает три аргумента вместо одного. [] [
] - неразрывной символ пробела. Даже если это не вся проблема, это все равно может быть хорошей идеей. [