我在智能代码中有以下两个javascript函数,我想用它来显示一个包含html标记的动态内容的弹出窗口:
打开弹出窗口的第一个功能:
<script type="text/javascript">
// global variable for subwindow reference
var newWindow;
// generate and fill the new window
{literal}
function makeNewWindow( ) {
// make sure it isn't already opened
if (!newWindow || newWindow.closed) {
newWindow = window.open("", "prd_window", "height=400, width=300, fullscreen, resizable");
// delay writing until window exists in IE/Windows
setTimeout("writeToWindow( )", 50);
} else if (newWindow.focus) {
// window is already open and focusable, so bring it to the front
newWindow.focus( );
}
}
{/literal}
第二个用于将动态内容写入弹出窗口的函数,该函数从第一个函数调用:
function writeToWindow( ) {ldelim}
// assemble content for new window
var newContent = "<html><head><title>title text here</title></head>";
newContent += "<body>";
var full_descr = "{$markup_info.fulldescr|strip|escape:'html'}";
newContent += "<div id=\"div_fulldescr\">" + full_descr + "</div>";
newContent += "</body></html>";
// write HTML to new window document
newWindow.document.write(newContent);
newWindow.document.close( ); // close layout stream
{rdelim}
</script>
在第二个函数中,我使用'escape'smarty修饰符对 full_descr 变量中包含的html标记进行编码,因此javascript代码不会中断。 $ markup_info 是一个聪明的关联数组, fulldescr 是其中一个索引。
上面的代码弹出一个窗口,其中 div_fulldescr 元素的内容显示为html标记,正如预期的那样,即它尚未被解码。 我想知道如何在显示弹出窗口之前解码 div_fulldescr div元素的html标记。
答案 0 :(得分:0)
您可能希望将{$markup_info.fulldescr|strip|escape:'html'}
替换为{$markup_info.fulldescr|escape:'javascript'}
。