当我尝试在javascript中使用它们时,使用带有转义符号的字符串时遇到一个问题。
在视图的顶部,我以这种方式初始化变量:
@{ var lol = "hello \"mister sir\" I am quotes"; }
在javascript中我尝试了不同的变种。出于测试目的,我写了一个小函数:
$selector = $('#some-button');
function test(str) {
$selector.html(str);
alert(str);
}
有我的尝试:
javascript转义。它可以在警报或html内容中正常工作。
test("hello \"mister sir\" I am quotes");
HtmlAttributeEncode或HtmlEncode。它们并不适用于所有情况。它会在警报中显示hello "mister sir" i am quotes
,在html内容中显示hello "mister sir" i am quotes
test("@HttpUtility.HtmlAttributeEncode(lol)");
test("@HttpUtility.HtmlEncode(lol)");
默认c#或JavaScriptStringEncode。它们不适用于警报。它会在警报中显示hello "mister sir" i am quotes
。
test("@Ajax.JavaScriptStringEncode(lol)");
test("@lol");
test("@HttpUtility.JavaScriptStringEncode(lol)");
Html.Raw()。根本不起作用。它用未转义的双引号打破了标记。
test("@Html.Raw(lol)");
你能帮我解决一些可以用作javascript变种(1)的方法吗?
答案 0 :(得分:2)
通常情况下,最好使用您最喜欢的JSON序列化程序来编码要注入javascript的任何值。这将自动在字符串周围添加双引号,并适当地转义字符串中的任何内容:
cmake_minimum_required(VERSION 3.2)
project(sdl)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(sdl ${SOURCE_FILES} Game.cpp Game.h)
INCLUDE(FindPkgConfig)
PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0)
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARIES})
add_custom_command(TARGET sdl POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/assets
$<TARGET_FILE_DIR:sdl>/assets)