2010-12-02 38 views
2

感谢this answer当通过ExtJS AJAX调用加载时,我能够获得JavaScript执行。为什么javascript eval会在Chrome浏览器,Safari浏览器中工作,但只有在firebug上才能在firefox中工作?

但是,下面的代码不起作用一样在所有浏览器(在Mac上):

  • 铬:作品,警报弹出
  • 野生动物园:作品,警报弹出
  • 火狐:作品,但只有当萤火虫启用,不启用Firebug时,该脚本会被忽略

我怎样才能得到javasc在没有安装Firebug的情况下通过Firefox中的AJAX调用来执行ript?

Ext.onReady(function(){ 

    var menuItemStart = new Ext.Panel({ 
     id: 'panelStart', 
     title: 'Start', 
     html: 'This is the start menu item.', 
     cls:'menuItem' 
    }); 

    var menuItemApplication = new Ext.Panel({ 
     id: 'panelApplication', 
     title: 'Application', 
     html: 'this is the application page', 
     cls:'menuItem' 
    }); 

    var regionMenu = new Ext.Panel({ 
     region:'west', 
     split:true, 
     width: 210, 
     layout:'accordion', 
     layoutConfig:{ 
      animate:true 
     }, 
     items: [ menuItemStart, menuItemApplication ] 
    }); 

    var regionContent = new Ext.Panel({ 
     id: 'contentArea', 
     region: 'center', 
     padding:'10', 
     autoScroll: true, 
     html: 'this is the content' 
    }); 

    new Ext.Viewport({ 
     layout: 'border', 
     items: [ regionMenu, regionContent ] 
    }); 

    menuItemStart.header.on('click', function() { 
     Ext.Ajax.request({ 
      url: 'content/view_start.php', 
      success: function(objServerResponse) { 
       regionContent.update(objServerResponse.responseText); 
      } 
     }); 
    }); 

    menuItemApplication.header.on('click', function() {    
     Ext.Ajax.request({ 
      url: 'content/view_application.php', 
      success: function(objServerResponse) { 
       var responseText = objServerResponse.responseText; 
       console.log(responseText); 
       regionContent.update(responseText); 
       var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi; 
       while(scripts=scriptsFinder.exec(responseText)) { 
        eval(scripts[1]); 
       } 
      } 
     }); 

    }); 
}); 

正在被加载的基础:

<script type="text/javascript"> 
    alert('inside application view'); 
</script> 
<?php 
echo 'this is the application view at ' . date('Y-m-d h:i:s'); 
?> 

回答

1

console.log是你的罪魁祸首。

每当你在JavaScript中登录,这是一个好主意,以检查是否调用它的函数之前存在控制台:

if(window.console) console.log('whatever'); 

这样,当控制台可用,就只执行。

3
console.log(responseText); 

此行似乎有问题给我。 console仅当Firebug开启时才存在,因此您必须对其进行评论,或在使用之前检查它是否存在。

+0

忘记了在那里:-),并知道它在Firefox中导致问题很有用,谢谢 – 2010-12-02 10:22:20

0

不知道是否删除console.log为您解决这个问题,但请参阅我的other answer关于loadScripts配置也。

相关问题