我只是在学习javascript,所以我真的不知道我在做什么。在工作中,我们有几个内部网站,我们去查找信息。我正在尝试写一些可以加快这个过程的东西。我被困在第一个网站上,只是想让它登录。我在Chrome中加载了网站,并使用JQuery命令,我能够输入用户名和密码,并以编程方式单击登录按钮。我使用以下代码加载页面...
let Hash = 'abc';
let Pass = '123'
let ATSweb = 'https://website.aspx'
let wHeight = window.outerHeight;
function load_home() {
document.getElementById("main").innerHTML = '<object type="text/html" height =' + wHeight + ' width = "100%" id="ATS" data=' + ATSweb + '></object>';
$('input#_ctl0__ctl0_FullPageBody_MainColumn_UsernameTextbox').value = Hash;
}
load_home();
该JQuery命令在Chrome的开发者控制台的原始页面中工作,但是当它加载了此代码时,它不起作用。在开发人员控制台中,如果我深入查看代码正在加载的页面,然后执行命令,它会将Hash变量放入控件中。
我猜有一些方法可以引用我不知道的正在导入的文档。任何帮助将不胜感激。这是我的HTML。
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
<main id="main" height = '100%' width = '100%'>
</main>
<script src="index.js"></script>
</body>
</html>
设置输入值必须在加载外部资源(本例中为网页)后进行。
因此,当您在Chrome控制台中执行$(...)
语句时,所有这些加载都已发生。但是,当您将上面的代码放入网页时,事情的顺序会发生一些变化。该行代码执行并且不执行任何操作,因为文档尚未加载。
根据您的问题,似乎正在发生的事情。所以...
更改
$('input#_ctl0__ctl0_FullPageBody_MainColumn_UsernameTextbox').value = Hash;
至
$('#ATS').on('load', function(){
$('input#_ctl0__ctl0_FullPageBody_MainColumn_UsernameTextbox').value = Hash;
}
如果这不起作用,请告诉我,我们可以搞清楚。
我开始认为这根本不可能。我一直遇到以下错误。
Blocked a frame with origin "null" from accessing a cross-origin frame.
问题似乎是访问下面的'#document'元素。
<html>
<head></head>
<body>
<script type="text/javascript" src="js/jquery-2.2.2.min.js">/script>
<main id="main>
<object type="text/html" height="1160" width="100%" id="ATS" data="http://thewebsite.aspx"></object>
#document
</object>
</main>
<script src="index.js"></script>
</body>
</html>
我进入控制台并运行以下代码行。
let frame = document.getElementById('ATS').contentWindow
let pEl = frame.$('#_ctl0__ctl0_FullPageBody_MainColumn_UsernameTextbox')
第二行代码产生了关于“阻塞帧”的错误。
我遇到了这个讨论被阻止的帧并使用本地文件的website,这就是我正在做的事情。
所以,除非有人有任何想法,否则我将把这一点想象成不可能。
感谢您花时间检查这篇文章,尽力帮助。