从 Ajax 请求执行内联脚本

发布于 2024-12-06 15:42:28 字数 913 浏览 0 评论 0原文

在我的应用程序主页上,我构建了一个“小部件”系统。小部件的来源是服务器端生成的,并通过 Ajax 推送到客户端。

Ext.Ajax.request({
    url: '/get-widgets',
    success: function( response ) {
        var boxes = Ext.decode( response.responseText );
        Ext.each( boxes, function( box ) {
            box.id = 'cell-' + box.cell;

            var element = Ext.DomHelper.append( 'canvas', {
                tag: 'div',
                id: box.id,
                cls: 'widget size-' + ( box.size || '11' ),
                children: [{
                    tag: 'div',
                    cls: 'title',
                    html: box.title
                }, {
                    tag: 'div',
                    cls: 'main',
                    html: box.body
                }]
            }, true );
        });
    }
});

问题是,某些小部件的主体中有一些内联 Javascript,需要执行。这在 Firefox 中完美运行,但在 Chrome 中却行不通。

是否需要激活一个标志或其他东西才能执行内联代码?

On my application homepage, I built a 'widgets' system. The source of the widgets is generated server side, and pushed to the client through Ajax.

Ext.Ajax.request({
    url: '/get-widgets',
    success: function( response ) {
        var boxes = Ext.decode( response.responseText );
        Ext.each( boxes, function( box ) {
            box.id = 'cell-' + box.cell;

            var element = Ext.DomHelper.append( 'canvas', {
                tag: 'div',
                id: box.id,
                cls: 'widget size-' + ( box.size || '11' ),
                children: [{
                    tag: 'div',
                    cls: 'title',
                    html: box.title
                }, {
                    tag: 'div',
                    cls: 'main',
                    html: box.body
                }]
            }, true );
        });
    }
});

The problem is, that some widgets have some inline Javascript in their body, that needs to be executed. This works perfectly in Firefox, but does not in Chrome.

Is there a flag or something you need to activate for the inline code to be executed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小…楫夜泊 2024-12-13 15:42:28

找到了 Ext.Element::update() 方法具有一个用于扫描和执行内联脚本的标志。我将代码更改如下以利用此方法:

var element = Ext.DomHelper.append( 'canvas', {
    tag: 'div',
    id: box.id,
    cls: 'widget size-' + ( box.size || '11' ) + ' ' + ( box.cls || '' ) + ' ' + ( box.type || '' ),
    children: [{
        tag: 'div',
        cls: 'title',
        html: box.title
    }, {
        id: box.id + '-body',
        tag: 'div',
        cls: 'main'
    }]
}, true );

Ext.get( box.id + '-body' ).update( box.body, true );

Found out the Ext.Element::update() method features a flag to scan for and execute inline scripts. I changed my code as follows to utilize this method:

var element = Ext.DomHelper.append( 'canvas', {
    tag: 'div',
    id: box.id,
    cls: 'widget size-' + ( box.size || '11' ) + ' ' + ( box.cls || '' ) + ' ' + ( box.type || '' ),
    children: [{
        tag: 'div',
        cls: 'title',
        html: box.title
    }, {
        id: box.id + '-body',
        tag: 'div',
        cls: 'main'
    }]
}, true );

Ext.get( box.id + '-body' ).update( box.body, true );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文