2011-12-07 22 views
1

我正在使用Jquery colorbox来实现一个弹出窗口。这个弹出窗口立即打开并运行。但是对于第一个加载页面,只是第一次加载,弹出窗口无法加载内容。 My screen使用colorbox弹出立即打开(jQuery - Magento)

jQuery(document).ready(function defaultPopup(){ 

    var direct = '<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('popup')->toHtml(); ?>' 
    if(direct){ 
     jQuery('#popup_home').colorbox({open:true,html:direct,overlayClose:false}); 
     return false; 
    } 
}); 
<div id="popup_home"></div> 

回答

1

你应该逃避字符串中的特殊字符(<>)。

对于网络浏览器,direct变量的内容是一个没有内容的HTML标记。

试试这个:

jQuery(document).ready(function defaultPopup(){ 
var direct = '<?php echo $this->getLayout()->createBlock(\'cms/block\')->setBlockId(\'popup\')->toHtml(); ?>' 
direct = $('<div/>').text(direct).text() // escaping characters in the initial string 
if(direct){ 
    jQuery('#popup_home').colorbox({open:true,html:direct,overlayClose:false}); 
    return false; 
} 
}); 
<div id="popup_home"></div> 
+0

感谢您的帮助,但的.text(直接)在CMS块[HTML表单]加载它的一切。就像它加载的链接[] –

+0

我更新了解决方案,请检查它。我更新了字符转义(以前的版本返回的对象,而不是字符串),另外我手动转义了初始字符串中的单引号 - 这必须在服务器上生成字符串'<?php echo $ this-> getLayout ) - > createBlock( 'CMS /块') - > setBlockId( '弹出') - > toHtml(); ?>' – Minras