- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试修改我访问权限有限的网站上的一些 CSS
。我已被允许在服务器上创建页面,但无法修改网站上其他 PHP
生成的页面。
我正在探索将 CSS
注入(inject) iframe
中。我首先隐藏 iframe
,然后在进行更改后显示它。
不幸的是,我唯一一次知道我可以访问 iframe.contentWindow.document
是在 iframe.onload()
事件触发之后。页面的大部分内容都是异步加载的,因此在加载所有外部内容(包括社交媒体内容)时,原本需要 3 秒才能看到屏幕上内容的等待现在变成了令人痛苦的 7-10 秒等待。
是否有任何事件在 onload()
之前触发,让我知道我可以访问新文档?我只想将 stylesheet
注入(inject)头部,我不在乎 90% 的 DOM
是否“准备就绪”。
最佳答案
不确定这是否是您想要的东西 - 但它可能会有所帮助
注意:我一般不喜欢这种类型的代码,我原本以为我会使用 MutationObserver - 但是,我发现我必须在等待 iframe 的 contentDocument 指示内容已开始加载时执行类似上述操作,然后才能附加突变观察器 - 然后我会错过 head
一半的时间都被附加元素!
Firefox 在 iframe 上有一个 mozbrowserloadstart 事件 - 但这只是 Firefox,所以在其他地方根本没用
function limitedRetryWithDelay(count, delay, tester, cb) {
var res = tester();
if(res) {
cb(res);
} else {
if (count > 0) {
setTimeout(function() {
limitedRetryWithDelay(count - 1, delay, tester, cb);
}, delay);
}
}
}
// next 3 lines is just how I tested it - you'll need a reference to the iframe node instead for "tgt"
var tgt = document.createElement('iframe');
document.body.appendChild(tgt);
tgt.src = '/index.html?_=' + Math.random() + '_' + Math.random();
// end testing code
// try every 10ms for 5 seconds because (500 * 10 = 5000ms)
limitedRetryWithDelay(500, 10, function (e) {
return tgt.contentDocument && tgt.contentDocument.location != 'about:blank' && tgt.contentDocument.head;
}, function(head) {
console.log('head is', head);
});
顺便说一句,在对文档执行某些操作之前,您可能不需要等待 head
出现,您很可能只需等待 contentDocument
limitedRetryWithDelay(500, 10, function (e) {
return tgt.contentDocument && tgt.contentDocument.location != 'about:blank' && tgt.contentDocument;
}, function(doc) {
console.log('document is', doc);
});
关于javascript - IFRAMES : event between contentWindow. beforeunload() & onload(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44622686/
我在 Chrome 和 Safari 上试过了,这两个浏览器都不行。当我刷新页面时,Chrome 中只有一个警告窗口如下所示。如果仅使用 evt.preventDefault(),则该函数不起作用。不
我的代码: //hold window open on form change window.onbeforeunload = function(e) { if(formChanges > 0
以下代码始终显示相同的消息:此页面要求您确认等。是否可以更改此文本以显示其他内容? $(window).bind('beforeunload', function(){ }); 是否可以查询用户是真的
我有一小段代码: $(window).bind('beforeunload', function() { $.ajax({ async: false, type: 'POST',
我想知道是否可以在 beforeunload 事件上向数据库发送查询。 $(window).on('beforeunload',function() { console.log('before
import React, { useState, useEffect } from "react"; import "./styles.css"; export default function A
我在移动浏览器上工作了大约 3 个月,现在我遇到了一个无聊的问题 beforeunload和 onload .在两种情况下,它们不能清楚地工作。当我关闭选项卡时,浏览器经常调用它们。但是,当用户通过一
第 1 页包含动态表单,第 2 页是对提交数据的审核。我有以下限制: 提交第 1 页时没有 beforeunload 警告; beforeunload 刷新页面 1 时发出警告; 从第 2 页发出 h
我已经使用 window.beforeunload 功能禁用了页面重定向/重新加载,但是一旦页面中发生表单提交,我想重定向到下一页,而不显示 window.beforeunload 警报。我怎样才能做
我有一个表单,当某些元素获得焦点时它会发生变化。 我希望在离开页面时收到警告。所以我保留了一个标志,告诉我这些元素何时发生变化。 问题在于,“此页面正在要求您确认是否要离开”警报始终提示; funct
我一直在思考应该使用哪一个:beforeunload或onbeforeunload它们似乎都在做非常相似的事情,但具有不同的浏览器兼容性。 一些背景: 我有一个表格。在页面加载时,我序列化表单并将其保
当用户单击按钮时,我使用 JqueryUI 自定义确认框。 这是脚本, function exit() { $("#dialog-confirm").dialog({
我正在尝试找出如何限制表单上的 beforeunload 命令。我已经能够弄清楚如何取消绑定(bind) beforeunload 命令,然后当我离开这个有效的表单时。但是,无论表单是否更改,每次都会
在我的应用程序中,我有一个评论框,我想在其中显示一条消息,表明它尚未保存。在函数 warnOpenEditor 中,我添加了 window.onbeforeunload 事件,但它不会触发。附上TS和
我有一个简单的函数,可以在发出新页面请求时显示旋转器叠加层。 $(window).on("beforeunload", function() { $('#nav-spinner').show();
我有一个主干应用程序,我想在导航到未保存的更改之前提醒用户。我有一个事件要做: $(window).bind('beforeunload', function() { var status =
我正在将 JSF 与omnifaces 和cdi 一起使用。在 xhtml 页面中,我使用了一些类似于(下面的 jsf 页面有更多详细信息) 的 js window.onbeforeunload =
我在我的页面上使用了 beforeunload 事件,这样当用户试图关闭我的网站/标签时,我会提示用户他们不应该离开网站,除非填写所有表格。但问题是我的页面有一个丰富的表单,在每个部分表单填写后重新加
我正在页面中检测表单更改,所以我已经处理了 $('#element').change(function(){ metaDataChange = true; }); 这样当用户离开页面并且在表单的输入中
我明白用自定义对话框替换 beforeunload 对话框是不可能的,如果我们需要为用户设置自定义消息,我们必须返回一个字符串我们的 beforeunload 处理程序: {Custom messag
我是一名优秀的程序员,十分优秀!