使用easyXDM可以修改提供程序页面的内容



我正在尝试使用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并遇到过这个问题吗?

附言:easyXDM在这里似乎不是一个标签。如果你认为它值得的话,请为我添加它。

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

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

为了解决这个问题,我删除了添加到页面中的iframe,并使用RPC配置的"props"属性使iframe在屏幕上可见。一旦我做到了,一切都很顺利。

相关内容

  • 没有找到相关文章

最新更新