【问题标题】:Code after window.open doesn't get executedwindow.open 之后的代码没有被执行
【发布时间】:2013-09-11 17:14:03
【问题描述】:

我最近开始学习 javascript,目前正在尝试制作一个小脚本,通过填写用户名/密码字段,然后单击“提交”按钮来自动化登录过程。

我的代码如下:

window.open("");
document.getElementById('ctl00_Username').value = "XXXX";
document.getElementById('ctl00_Password').value="XXXX";
document.getElementById('ctl00_ButtonLogin').click();

如果我运行一次,网站会打开,但没有填写任何文本字段。
如果我运行代码两次(当网站已经打开时)登录成功。

我尝试将“console.log”放在“window.open”之后,但由于某种原因似乎永远不会被调用。

我可能做错了什么?

编辑:删除了不必要的代码。我也不再确定文档对象实际上指向新打开的窗口。对“console.log”和“alert”的调用似乎也没有任何作用。

是否可以从窗口中获取正确的文档对象? 甚至可以使用“window.open”然后访问新的文档对象吗? 非常感谢提供帮助!

【问题讨论】:

  • 你不能。您应该将'filling code' 放入新文件(elogin/default.aspx)
  • 所以window.open-call和'填充代码'不能同时运行?因为就像我在问题中写的那样;如果我运行脚本两次,一切正常。
  • 您的代码甚至应该做什么? window.open 打开一个新窗口,因此document = window.document(这甚至没有意义,document 已经等于 window.document)将获得当前窗口的document 属性,而不是您刚刚打开的那个。
  • 感谢您指出这一点!我的印象是我需要从窗口中“获取”一个新的文档对象。该代码应该打开站点,更改请求的文本字段的值,然后通过调用按钮的 click() 函数登录到站点。但是,在 window.open 之后脚本似乎停止了。编辑:但是,我如何获得刚刚打开的窗口的文档属性?
  • @Cethy 据我所知,没有任何 JavaScript 可以执行此操作,除非您执行 window.open(url + "?feild1=" + myText) 之类的操作,但您必须知道目标站点的工作方式。

标签: javascript


【解决方案1】:

window.open 调用返回对窗口的引用,您可以使用它来修改窗口。

 win=window.open(...);
 win.document.doYourThing

您可能还需要等到文档准备好(也就是加载)。下面使用jquery

 $(win.document).ready(function() {
     //the document is loaded by here, this is probably where you should do your stuff.
 });

【讨论】:

  • 我试过了,但是 jquery-block 中的代码由于某种原因永远不会触发。
  • 这仅适用于与其父级相同域中的新窗口。
【解决方案2】:

1.将您的值作为查询字符串传递。示例:www.test.com?username=bro&password=bro。 2.在另一个页面粘贴下面的代码。

$(function () {
        $(document).ready(function () {
        var amount = $('money').val();
        var from = "INR";
        var to = "SGD";
        $.ajax({ type: "POST",
        url: "WebService.asmx/CurrencyConversion",
        data: "{amount:" + amount + ",fromCurrency:'" + from + "',toCurrency:'" + to + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
        var money = $(".money").val();
        $(".money").replace(money, data.d);
        }
        });
        });
        });

3.现在也粘贴此代码。

var uname = getUrlVars()["username"];
var psw = getUrlVars()["password"];

4.您将在上述变量中​​具有值。享受做任何您想做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 2019-12-03
    • 2017-10-21
    • 2020-11-21
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多