我在重定向到页面后尝试执行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()
我很感激你的帮助!
答案 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.com
到www.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);
?>