Javascript bookmarklet进入URL并执行
Javascript bookmarklet go to URL and execute
我有一个这样的javascript,用于bookmarklet:
window.location="URL"
document.getElementById('username-id').value = 'User'
document.getElementById('pwd-id').value = 'pass'
doLogin();
问题是javascript一旦到达URL就会停止。如何使其转到页面并执行脚本?
我不推荐浏览器扩展-它们允许不受信任的代码在受信任的代码上下文中运行。如果您的浏览器扩展加载页面并自动输入用户名和密码,那么如何阻止它将这些凭据发布到恶意站点呢?只有你,而且只有你仔细阅读了源代码。
为了解决上面的问题,我在我的浏览器的收藏栏中添加了bookmarklet,需要点击两次:1. 单击可导航到该位置2. 点击填写表格
javascript:
var L='http://mysite.com/';
if(location!=L)location=L;
else{
document.getElementById('username-id').value='User';
document.getElementById('pwd-id').value = 'pass';
document.close();
doLogin();
}
祝你好运!
遗憾的是,您的书签无法工作。window.location
结果加载新页面的变化-如果没有文档首先出现,您无法在该页上执行任何Javascript。
所需的操作可以通过浏览器扩展实现,例如Greasemonkey脚本,它在页面加载时在页面上执行指定的Javascript
如果你控制你正在加载的页面,我会考虑将该数据作为片段传递并从页面处理。类似于window.location="URL#username=...;password=..."
,而不是解析页面中片段的数据并对其进行任何需要的操作。但是,在这种特殊情况下,这不是一个好主意,因为密码将被保存在浏览历史记录中。
如果您想从加载在与目标位置相同的域(并且使用相同的方案)上的页面执行bookmarklet,您可以(某种程度上)通过将其加载到iframe中来实现。
javascript:
document.body.innerHTML = '<iframe src="http://example.com/page2.html" onload="this.contentWindow.location.assign(`javascript:
document.body.style.textTransform = ''uppercase''; /* put code here */
void(0);`); this.onload = null;" width=100% height=100%>';
注意多行字符串使用反勾号以提高可读性。onload = null
需要防止无限循环,因为onload
将在位置分配javascript代码后触发。
(仅在Chrome中测试)
试着用window.onload
事件来包装你的代码。
window.location = "URL"; window.onload = function() {
document.getElementById('username-id').value = 'User'
document.getElementById('pwd-id').value = 'pass'
doLogin();
}
由于上面的解决方案不起作用,您仍然应该能够编写一个简单的浏览器扩展来解决您的问题。这很简单:选择您使用的浏览器并遵循文档。这是唯一的方法。
- iFrame url更改时执行函数
- 每次 url 哈希更改时执行 if 语句
- PhantomJS执行搜索并抓取URL
- WebView加载URL(“javascript:XYZ”)在我的网络视图中执行了好几次
- 如何逐个执行url请求而不导致堆栈溢出?(Node.JS)
- jQuery:$.ajax() 重定向到其 URL 表单操作参数,而不是对表单操作执行 AJAX 请求
- 当 ajax url 是 '/' 时,会执行什么
- 什么时候是 window.location.href = url 被执行
- 如何以编程方式在URL上执行javascript
- 如何在单击按钮并执行PHP代码后自动打开URL
- 如何使用jQuery检查图像URL是否为空并执行某些操作
- 在文本框中输入 URL 时执行 JavaScript 事件
- 如果数组中存在 URL,请执行某些操作
- 根据 URL 执行某些 JavaScript
- 在使用 CasperJS 遍历参数化 URL 时,仅执行最后一次迭代
- 我将如何从外部 URL 获取代码并在 NodeJS 中执行它
- 更改 url 后在 Firebug 中执行命令
- 为什么 url 中的“#”会阻止 jquery 脚本执行
- .在相同选项卡中执行URL打开-html/javascript
- 使用JavaScript执行URL,但不要打开新窗口或选项卡