论坛首页 Web前端技术论坛

Prototype之Ajax.Updater不能正确引入脚本的问题

浏览 3341 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-11  
应该清楚的一点是对使用:
new Ajax.Updater(
                    {success: divname},
                    uri,
                    {
                        method: 'get',       
                        parameters: pars,                 
                        evalScripts: true,
                        onFailure: reportError
                    })

这里正确的设置了evalScript:true表示加载的内容不会过滤掉<script...等。但是不表示能加载
<script language="javascript" type="text/javascript" src="path for js file"></script>

所对应的js资源,因为prototype在执行
<script>alert("123")</script)
中的脚本的时候使用的是eval.为此上面脚本的执行结果为eval('alert("123")')。那么怎么来解决关于存在于独立的文件中的js脚本问题,则可以参看如下的实现:
/**
 *prototype-exp.js
 *Used for load the css or js code in div area..
 *for the prototype not support the js code in dep.. file
 */
var View_load;
(function(){
    if (View_load == null)
        View_load = new Object();
    var UNDEFINED;
    
	View_load.loadjs = function (scriptid,jsurl){
       var scriptTag = document.getElementById(scriptid);
       if(scriptTag) document.body.removeChild(scriptTag);
       script = document.createElement('script');
       script.setAttribute("src",jsurl);
       script.type = 'text/javascript';
       script.id = scriptid;
       document.body.appendChild(script);
    }

    View_load.loadcss = function(cssid,cssurl){
       var scriptTag = document.getElementById(cssid);
       if(scriptTag) document.body.removeChild(scriptTag);
       css_ = document.createElement('link');
	   css_.rel="stylesheet";
       css_.setAttribute("href",cssurl);
       css_.type = 'text/css';
       css_.id = cssid;
       document.body.appendChild(css_);
     }  
})();


这里主要解决了引入也面中不能正常加载js和css文件的问题.可以使用如下方式调用。
<script language="javascript" type="text/javascript">
View_load.loadjs("","/js/sayhello.js");
View_load.loadcss("","css/cssa.css");
</script>


需要注意的一点是prototype-exp.js需要放置到框架页面中来。
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics