用例:我正在使用模板构建器应用程序。用户可以使用不同的组件构建html模板,如文本框,图片框,幻灯片等。
问题:我们面临的问题是幻灯片组件。我们正在使用nivoslider插件来构建它。滑块必须具有类似用户可以更改转换时间的设置,选择过渡等。用户可以添加多个幻灯片。
现在问题是当我们添加多个幻灯片时,每个幻灯片可能都有自己的参数,所以我们不能有一个共同的功能。此外,用户可以回来编辑模板,因此我们需要为每个幻灯片显示独立的脚本。
重新研究:我们的基本结构有效,但卡在一个地方。我们需要在用户添加到页面的每个幻灯片中附加一个script
标记。
return '<div id="slider" class="nivoSlider">'+
'<div class="">'+
'<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide01.jpg" data-thumb="images/slideShow/thumb/slide01.jpg" alt="" />'+
'</div>'+
'<div class="">'+
'<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide02.jpg" data-thumb="images/slideShow/thumb/slide02.jpg" alt="" />'+
'</div>'+
'<div class="">'+
'<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide03.jpg" data-thumb="images/slideShow/thumb/slide03.jpg" alt="" />'+
'</div>'+
'<div class="">'+
'<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide04.jpg" data-thumb="images/slideShow/thumb/slide04.jpg" alt="" />'+
'</div>'+
'</div>'+'<script>$("#slider").nivoSlider({effect: "sliceDown",animSpeed: 500,pauseTime: 3000,startSlide: 0,controlNavThumbs: true,controlNavThumbsFromRel:true, pauseOnHover: true,manualAdvance: false});</script>';
代码末尾的脚本标记是我们尝试附加到HTML并将其保存到数据库的内容。我们尝试使用空白<div id="temp"></div>
并附加脚本标记在其中,但我相信jQuery
执行脚本并且不保存它,因此我们得到一个空白div。如何将脚本标记存储在HTML结构中并将其保存到数据库?
答案 0 :(得分:5)
不是直接写出脚本标记,而是将其创建为对象,然后附加它。当你直接创建元素而不是传递一个字符串时,浏览器应该尊重它。
var script = document.createElement( "script" );
script.type = "text/javascript";
script.src = "scriptname.js";
$("#temp").append(script);
然后你可以把你想要执行的javascript放在外部脚本文件中,它应该可以正常工作