JQuery - 在window.location之后使用$(document).ready()

时间:2016-02-04 21:34:41

标签: javascript jquery html

我在重定向到页面后尝试执行js功能,例如" example.com"当DOM准备好与他合作但它不起作用时。 import random probabilities = [] player1="John" print("Calculating", player1 + "'s luck!") player1num = random.randint(0,100) newnum = player1num / 2 newnumadded = newnum + 10 if newnumadded > 50: bonusnum = newnumadded + 25 print(player1 + " Your number is:", str(player1num) + "! You have a percentage to win of: ", str(bonusnum) + "%!") probabilities.extend([player1 for x in range(0,int(bonusnum))]) else: print(player1 + " Your number is:", str(player1num) + "! You have a percentage to win of: ", str(newnumadded) + "%!") probabilities.extend([player1 for x in range(0,int(newnumadded))]) print(probabilities) 正在" example.com"之前运行已加载。怎么了?这是我的代码:

$(document).ready()

我很感激你的帮助!

3 个答案:

答案 0 :(得分:4)

你根本无法做你想做的事情。当页面更改为"http://example.com"时,会启动一系列事件,这些事件最终会导致整个Javascript上下文停止。您无法在新页面中通过此页面运行Javascript。

分配时:

window.location = "http://example.com";

这将开始一个停止在当前页面中执行Javascript的过程。卸载当前页面并释放与其关联的所有内存。然后,加载一个新页面,创建一个新的Javascript上下文,然后加载并运行该新页面中的Javascript。

与新页面通信的常用方法是将想要在该新页面中运行的Javascript放入,然后将一些参数发送到其Javascript可以检测到的新页面并做出相应的反应。

例如,您可以这样做:

window.location = "http://example.com?doSomething=whatever";

然后,当加载新页面时,THAT页面中的Javascript可以检查查询字符串以查看是否有任何特殊参数传递给它。如果是,则Javascript可以解析它们并根据这些查询字符串参数决定要执行的行为。

另一种可能性是不使用window.location。相反,您可以通过Ajax获取新的HTML,然后在当前页面中使用Javascript将新内容插入当前页面(或用新内容替换现有内容)。使用jQuery,您可以使用jQuery' .load()将URL中的内容直接加载到当前页面中的元素中,如下所示:

$("#myDiv").load(someURL);

由于这是Ajax,它具有任何Ajax调用可能具有的所有正常的跨源限制,因此您无法从其他网站自由加载页面(除非它们允许跨源访问)。

答案 1 :(得分:0)

页面中嵌入的JavaScript程序仅在该页面打开时运行。

如果你离开页面,加载一个新的(你正在做的),它就会停止运行。

您不能仅使用浏览器的功能将JavaScript注入下一页。你必须有一些机制将它传递给服务器。

答案 2 :(得分:0)

我希望从www.mypage.comwww.example.com插入一些JavaScript值,然后点击提交按钮。 感谢您的澄清,但我决定将Selenium与Python和PHP结合使用。或者有没有办法用JavaScript做到这一点?

run_search.py​​

import sys
from selenium import webdriver

def insertContent(myElement):
    driver = webdriver.Firefox()
    driver.get("http://www.google.com")
    elem = driver.find_element_by_id("lst-ib")
    elem.send_keys(myElement)
    BUTTON_XPATH = '//button[@type="submit" @name="btnI"]'
    button = driver.find_element_by_xpath(BUTTON_XPATH)
    button.click()

if __name__ == '__main__':
    insertContent(sys.argv[1])

mypage.php

<?php
    $my_value = "Python";
    $exec_py = shell_exec('python run_search.py '.$my_value);
?>