1

我创建了一个简单的函数来将浮动的可调整大小的内容附加到页面:

function CreateFloatingWindow(id) {
        var win = document.createElement('div');
        $(win).attr('id', id);
        $(win).height(100).width(300).css('background-color', 'red');
        $(win).resizable().draggable();
        $(win).appendTo($('body'));
        $(win).load('http://www.fantasy-mmorpg.com/fowiki/#1419~2');
}

CreateFloatingWindow('first');

代码可以正常工作,除非加载的页面内部有某种 javascript,在这种情况下,结果是这样的“请激活 javascript” 消息

我认为消息是由目标页面本身处理的,但我无权访问它的源。

有没有办法让目标页面明白我启用了我的 javascript,即使它是通过 jQuery 加载到 div 中的?

注意上面的代码需要 jQuery 和 jQuery-UI 才能正常运行。

4

1 回答 1

2

我一直在研究,有几点需要注意:

首先, jQuery .load() 文档中的这个子句可能会有所启发:

脚本执行

.load()使用不带后缀选择器表达式的 URL调用时,会.html()在删除脚本之前传递内容。这会在脚本块被丢弃之前执行它们。但是,如果 .load()调用附加到 URL 的选择器表达式,则脚本会在 DOM 更新之前被剥离,因此不会被执行。两种情况的示例如下所示:

在这里,作为文档的一部分加载到#a 中的任何 JavaScript 都将成功执行。

1$('#a').load('article.html');

但是,在以下情况下,正在加载到 #b 的文档中的脚本块被剥离并且不被执行:

1$('#b').load('article.html #target');

检查不同的浏览器是否有消息“请激活 JavaScript”,我不确定这是在脚本级别还是浏览器级别。但我很确定“请启用 JavaScript ”可能是HTML 后备<noscript>- 如果它根本不执行任何 JavaScript。

于 2013-03-13T13:11:46.693 回答