麻烦iFrame.contentDocument

时间:2012-12-23 18:05:20

标签: javascript google-chrome iframe

基本上,我正在制作一个javascript来刷新页面,它会找到价格,并在价格上涨时购买该商品。

我在没有iframe的情况下让它工作,但我需要在iframe中工作,这是我遇到的问题。

如果您转到此页:[http://m.roblox.com/items/100933289/privatesales]

并运行此代码:

alert(document.getElementsByClassName('currency-robux')[0].innerHTML);

您会收到最低价格的提醒。在代码中,这不起作用(因此,我的问题。)

尝试在此页面上运行以下代码,以使其工作[http://www.roblox.com/Junk-Bot-item?id=100933289]

var filePath = document.URL;
var itemid = filePath.slice(((filePath.search("="))+1));
var mobileRoot = 'http://m.roblox.com/items/';
var mobileEnd = '/privatesales';
var mobileFilePath = mobileRoot+itemid+mobileEnd;

var iframe2 = '<iframe id="frame" width="100%" height="1" scrolling="yes"></iframe>';
document.write(iframe2);
var iframe = parent.document.getElementById("frame");
iframe.height = 300;
iframe.width = 500;
iframe.src = mobileFilePath;
var price;
var snipe = false;
var lp = Number(prompt("Snipe Price?"));
document.title = "Sniping";

function takeOutCommas(s){
    var str = s;
    while ((str.indexOf(",")) !== -1){
        str = str.replace(",","");
    }
    return str;
}

function load() {
    if (snipe == false) {
        tgs = iframe.contentDocument.getElementsByClassName('currency-robux');
        price = Number((takeOutCommas(tgs[0].innerHTML)));
        alert(price);
    }
}

iframe.onload = load;

2 个答案:

答案 0 :(得分:0)

您可以尝试同时拥有两个页面 - 来自“m.roblox.com”的页面和来自“www.roblox.com”的页面 - 在头顶添加以下内容:

<script>
  document.domain = "roblox.com";
</script>

不允许来自不同域的代码查看彼此的页面内容,但是如果您将域设置为相同的后缀,那么它应该可以工作。

答案 1 :(得分:0)

如果您无法通过共享相同的document.domain="roblox.com"代码来使其工作,那么您可以尝试将邮件发布到iframe。

将其放入iframe页面:

window.addEventListener('message',function(e) {
});

在父页面中执行此操作以向iframe传递消息(可以是字符串或对象,任何内容):

document.getElementById("frame").contentWindow.postMessage({ "json_example": true }, "*");

将其放在父母中以收听消息:

window.addEventListener("message", messageReceived, false);
function messageReceived(e) {
}

从iframe内部发回消息:

window.parent.postMessage('Hello Parent Page','*');