【问题标题】:Use easyXDM to modify the content of the provider page使用easyXDM修改提供者页面内容
【发布时间】:2012-02-09 16:51:58
【问题描述】:

我正在尝试使用easyXDM javascript 库来实现一些跨域破解。

easyXDM 的一些背景知识。我们有两个角色:

  1. 提供者,提供被他人调用的函数
  2. 消费者,调用提供者提供的函数。

要求是这样的:

The consumer passes the content as parameter and calls the function through RPC. 
The provider receives the request and use the content to modify its page.

这里,修改其页面是指尝试修改DOM结构或DOM节点中的内容。

提供者端的代码,一旦消费者请求,它将修改其页面内容。

var provider = new easyXDM.Rpc({}, {
    local: {
        modifyContent: {
            method: function(content){
                // modify the content on my page
            }
        }
    }
});

消费者端,它将执行 RPC 以要求提供者更改其页面。

    var consumer = new easyXDM.Rpc({
        remote: "remoteUrl"
    }, {
        remote: {
            modifyContent: {}
        }
    });
    //perform RPC and ask the provider to the modify its content
    consumer.modifyContent("This is some content that should be used to modify your content");

除了提供者尝试使用内容修改其页面时,一切都顺利进行。

不会引发错误或警告。但是页面不会像预期的那样改变。

此外,我单独运行“更改内容”代码(例如在 Firebug 控制台或 Chrome 控制台中复制&粘贴&运行),它会起作用。

有人用过easyXDM,遇到过这个问题吗?

PS:easyXDM 似乎不是这里的标签。如果您同意,请为我添加它。

【问题讨论】:

    标签: javascript cross-domain rpc


    【解决方案1】:

    我遇到了同样的问题,问题是我不明白 easyXDM 的 RPC 功能是如何工作的。

    对我来说,问题是我将子 iframe 添加到父 iframe,然后使用添加到页面的 iframe 的 url 调用 easyXDM.Rpc()。当我从父级向子级发送消息时,子级会很好地接收到消息(并且控制台会记录正确的消息),但我无法更改子级 iframe 中的任何本地内容或全局变量。我不明白的是,当在父级中创建新的 RPC 客户端时,该工具会自动创建一个 iframe。我认为它只会使用我在页面上绘制的 iframe。因此,我从一个 iframe(默认情况下在屏幕外绘制)进行日志记录,并与未连接到 RPC 调用的 iframe 进行交互。

    为解决此问题,我删除了已添加到页面的 iframe,并使用 RPC 配置的“props”属性使 iframe 在屏幕上可见。一旦我这样做了,一切都运行良好。

    【讨论】:

    • 我也遇到过类似的情况,我使用 jQ append 添加 iframe,而不是使用 easyXDM 的远程参数来执行此操作。一旦我修好了它,我就准备好了!
    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多