感谢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/