切换网页时遇到的尴尬事,老师们来看一眼指点我一个明白
当前页面为第一页面,点击 =>new Promise(function (resolve, reject) {
window.open("打开另一个页面", "_blank");
resolve(prompt("请写入您在第二页获取的数据"));
}).then (function (person) {
if (person) {
console.log("获取成功");
}
else {
console.log("获取失败");
}
});
=> 此时已经打开了第二页面,在第一页面 prompt命令 有几率性的执行
打开了第二页面获取数据后返回 =>
prompt命令 执行了就是执行了,没执行等它狗曰的一万年也没影
那么问题是:切换页面的时候这些命令是没来得及触发?是处于什么样的状态?是休眠了还是被销毁了?如何改善 !(data/attachment/forum/202211/10/163234xb9vtohzrtb91gxa.png)
好像被拦截了,我允许之后,有时候会要我输入prompt,有时候不用
貌似是一个几率性的问题
我也不知道如何解释,看起来是当页面在后台时,prompt会始终返回null
而且如果弹出成功,那么对应的网站无法加载
如果对于网站加载成功,那么这个窗口会弹出失败
基于这个想法,我使用`GM_openInTab`打开新页面,但是发现又回到了第一个问题页面在后台时,prompt会始终返回null
或者能不能这样?
```js
// ==UserScript==
// @name New Userscript
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @descriptiontry to take over the world!
// @author You
// @match https://bbs.tampermonkey.net.cn/thread-3599-1-1.html
// @grant GM_openInTab
// ==/UserScript==
new Promise(function (resolve, reject) {
GM_openInTab("https://bbs.tampermonkey.net.cn/");
const fn = function () {
console.log(document.hidden)
if (!document.hidden) {
window.removeEventListener("visibilitychange", fn);
resolve(prompt("请写入您在第二页获取的数据"));
}
}
window.addEventListener("visibilitychange", fn);
}).then(function (person) {
console.log(person);
if (person) {
console.log("获取成功");
}
else {
console.log("获取失败");
}
});
```
纠正:100%触发这话说的太满了,搜狗浏览器不触发
页:
[1]