1

我正在尝试创建一个书签,这样当您单击它时,它将在 div 框中加载 example.com/yourdata.php。

如何让它从 example.com 获取数据?

框架?还是有更好的解决方案?

4

4 回答 4

2

在另一个页面中创建从不同域获取数据的小书签(以加载到<div />使用 Ajax 中)时,您可能会遇到问题。

您最好的选择可能是插入一个 IFrame,并将内容作为页面的源。

如果你想把它作为一个非常基本的灯箱来做,你可以这样做:

(function() {

    var iFrame = document.createElement('IFRAME');

    iFrame.src = 'http://google.com';
    iFrame.style.cssText = 'display: block; position:absolute; ' 
                         + 'top: 10%; left: 25%; width: 50%; height: 50%';

    document.body.insertBefore(iFrame, document.body.firstChild); 

})();

这是书签格式的相同代码:

javascript: (function() { var iFrame = document.createElement('IFRAME'); iFrame.src = 'http://google.com'; iFrame.style.cssText = 'display: block; position:absolute; top: 10%; left: 25%; width: 50%; height: 50%'; document.body.insertBefore(iFrame, document.body.firstChild); })();

如果你想要漂亮的东西,你也可以把它设计得更多。这只是可能的一个基本示例。正如另一个人所说,最简单的方法是使用 Ajax 请求加载 jQuery,但这会更复杂一些。

于 2009-06-07T04:32:08.873 回答
1

直接在您的书签中执行 AJAX 调用,然后将您的 div 的 innerHTML 设置为返回的内容。不确定这是否有安全限制。

编辑:您不想使用 JQuery,因为您不能轻松地从书签加载 javascript 库。(虽然也许你可以通过 AJAX 得到它然后评估它......)

你需要做一个经典的XMLHttpRequest

更多信息在这里

于 2009-06-07T03:45:36.943 回答
1

使用Dojo 工具包,您可以使用dijit.layout.ContentPanedojox.layout.ContentPane在一个 div 中完全执行您想要的操作。
dijit.layout.ContentPane 和 dojox.layout.ContentPane 之间的区别在于您可以在 dojox.layout.ContentPane 中运行内联 javascript。

于 2009-06-07T04:45:16.110 回答
0

我通过在我的服务器上创建一个在另一个域上输出页面的 php 函数来绕过域限制。这样,当我调用 ajax.updater 时,javascript 认为它在同一个域中。

$sSrcPage = $_REQUEST['SrcPage'];

echo file_get_contents($sSrcPage, 0);

于 2009-08-07T05:59:10.283 回答