ajax - 为什么 javascript eval 在 chrome、safari 中可以工作,但只有在 firebug 打开时才能在 firefox 中工作?

标签 ajax firefox extjs firebug

感谢this answer通过 ExtJS AJAX 调用加载时,我能够执行 javascript。

但是,以下代码在所有浏览器(在 Mac 上)中的工作方式并不相同:

  • chrome:工作正常,弹出警报
  • safari:有效,弹出警报
  • firefox:可以工作,但仅当启用 Firebug 时,当 Firebug 未启用时,脚本将被忽略

如何在没有安装 Firebug 的情况下通过 Firefox 中的 AJAX 调用来执行 javascript?

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');
?>

最佳答案

console.log(responseText);

这条线对我来说似乎有问题。 console 仅在 Firebug 打开时才存在,因此您必须对其进行注释,或者在使用它之前检查它是否存在。

关于ajax - 为什么 javascript eval 在 chrome、safari 中可以工作,但只有在 firebug 打开时才能在 firefox 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4333771/

相关文章:

javascript - 继续执行脚本之前等待 AJAX 响应

javascript - 使用纯 Javascript 通过 AJAX 发送 WordPress 对象

firefox - Socket.io 无法向 Chrome 和 Firefox 上的 Node 服务器发送消息

html - 具有相同类的两个元素在 Firefox 中看起来不同

extjs - 如何将公式与 Sencha ExtJs v6 中的商店正确绑定(bind)?

javascript - 我如何在 ExtJS 中仅使用 formpanel 打开弹出窗口

jQuery 表单插件 + Ajax 文件上传 + Rails

javascript - Amcharts Serial - 将多个ajax数据加载为dataprovider

javascript - dispatchEvent 产生无序的调用捕获/冒泡监听器

javascript - EXTJS:如何在树面板中的图标节点上添加单击事件