访问使用AJAX加载的HTML页面上的DOM元素

时间:2013-08-20 20:43:42

标签: javascript ajax mootools

我目前正在努力解决网站上与AJAX相关的问题 目标如下:
有一个“简单”的HTML页面,其中包含一些链接和内容。

如果您点击某个链接,我想打开一个包含链接(来自href)的文件,该文件覆盖在页面中。页面中的内容当然是用新的div(叠加的)加载AJAX。

在这个新的重叠div中,我想添加一些通常已经有用的JS代码 无论如何,问题在于,根据我的具体情况,无法以易于使用的方式访问按AJAX加载的页面中的DOM元素。 到目前为止,我得到了以下代码:

$$('.add-exercise').addEvent('click', function(e) {
        var request_exercise_add = new Request.HTML({
            'method' : 'post',
            'url' : e.target.get('href'),

            onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript) {
            // i know i can access responseElements here..
            }
        });

        request_exercise_add.send('s=true');

        return false;
    });

我知道我可以访问responseElements中返回的元素,但是包含的网站上的逻辑在某种程度上相当复杂,因此它应该是 可以在动态加载的页面中的HTML代码中添加JS。 请注意,JS也无法添加到head部分,因为它不知道在dom-ready事件之后加载的元素。

2 个答案:

答案 0 :(得分:1)

你试过iframe吗? 或者您尝试添加的网站没有PPP cookie和AllowContentInIframe ..?

答案 1 :(得分:0)

如果您想在ajax请求中添加脚本,则需要evalScripts: true,并且应删除request选项周围的引号。

$$('.add-exercise').addEvent('click', function (e) {
    var request_exercise_add = new Request.HTML({
        method: 'post',
        url: e.target.get('href'),
        evalScripts: true,
        onSuccess: function (responseTree, responseElements, responseHTML, responseJavaScript) {
            // i know i can access responseElements here..
        }
    });
    request_exercise_add.send('s=true');
    return false;
});

我不知道响应的内容是什么,但您可能还想使用Mootools的.set()代替innerHTML来附加新元素(如果您还没有这样做)。也许值得查看Dimitar的答案 here