Javascript 如何禁用网页中的位置:已修复?
本网站: 有一个非常恼人的标题,总是在屏幕上,不会滚动离开 如果我右键单击它并在firefox中“inspect element”,那么我会发现css包含“position:fixed;”,如果我取消选中该选项,标题将正常运行,并像上帝希望的那样滚动 有没有办法让firefox自动完成这项工作,即在呈现页面之前从所有页面中删除所有位置:固定行 编辑------- 经过一段时间的思考,我想要的是一个书签,它将杀死这类东西 那么,如何让SciMonster看起来前途无量:Javascript 如何禁用网页中的位置:已修复?,javascript,html,css,firefox,bookmarklet,Javascript,Html,Css,Firefox,Bookmarklet,本网站: 有一个非常恼人的标题,总是在屏幕上,不会滚动离开 如果我右键单击它并在firefox中“inspect element”,那么我会发现css包含“position:fixed;”,如果我取消选中该选项,标题将正常运行,并像上帝希望的那样滚动 有没有办法让firefox自动完成这项工作,即在呈现页面之前从所有页面中删除所有位置:固定行 编辑------- 经过一段时间的思考,我想要的是一个书签,它将杀死这类东西 那么,如何让SciMonster看起来前途无量: var x = docu
var x = document.querySelectorAll('*'); // get all elements
for (var i = 0; i< x.length; i++) {
if (x[i].style.position == 'fixed') {
x[i].style.position = 'static';
}
}
是否适合进入firefox书签的位置字段
在win条件下,如果您转到并单击bookmarklet按钮,浮动标题将停止浮动并滚动,就像您已删除位置:固定一样代码>在元素检查器中。我找到了它,它告诉我如何查找具有特定CSS属性的元素(使用jQuery):
如果我们使用返回的集合,我们可以将位置重置为静态:
var x = $('*').filter(function () {
return this.style.position == 'fixed'
}).css('position', 'static');
只要把它放在一个用户脚本(包括jQuery)中,就可以了
还有一个非jQuery解决方案
var x = document.querySelectorAll('*'); // get all elements
for (var i = 0; i< x.length; i++) {
if (x[i].style.position == 'fixed') {
x[i].style.position = 'static';
}
}
var x=document.querySelectorAll('*');//获取所有元素
对于(变量i=0;i谢谢你,怪物。我使用了您的jQuery解决方案,但将其更改为查询标题标记(以及导入的jQuery):
这很好:
一个粘糊糊的标题肯定是你不想在屏幕上看到的东西的标志,这只会破坏它们
可能会修改它,将它们从固定更改为静态,但我还没有找到我真正想要的情况。关于这两个问题
和
它们非常相似
可以说,最简单的解决方案(中建议)是安装。它有
这样做的好处是,它试图通过只在relevant上循环来变得聪明
html元素并试图识别伪弹出窗口,而不是
拆开那些。它将自动在所有加载的网页上运行,除非
您可以编辑@include
标题行。(我还没有实际测试过。)
如果您想要一个bookmarklet,那么这应该可以完成任务(已测试)
关于鹦鹉螺(美国):
未压缩:
var x = document.querySelectorAll('*');
for(var i=0; i<x.length; i++) {
elementStyle = getComputedStyle(x[i]);
if(elementStyle.position=="fixed" || elementStyle.position=="sticky") {
x[i].style.position="absolute";
}
}
var x=document.querySelectorAll('*');
对于(var i=0;i再次更新
一个普通的JS解决方案:
/* find the topbar by coordinate */
var topbar
var el = document.elementFromPoint(document.documentElement.clientWidth - 200, 20)
while (el) {
if (getComputedStyle(el).position == 'fixed') topbar = el
el = el.parentNode;
if (el == document.body) break
}
if (topbar == undefined) return
/* disable position:fixed */
// topbar.style.position = 'absolute'
// ↑ this line doesn't work well, because sometime offsetParent is not <body>
// ↓ workaround
var paint = function (enforce) {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
var threshold = 200
if (!enforce && scrollTop > threshold * 3) return
var offset = scrollTop / threshold
if (offset > 1.2) offset = 1.2
topbar.style.transform = 'translateY(-' + offset * 100 + '%)'
}
paint(true) // initialize
document.addEventListener('scroll', () => paint())
/* when use JS to frequently change CSS value, disable CSS transition to avoid weird delay */
// topbar.style.transition = 'transform 0s'
// ↑ this line doesn't work because of compatibility
// ↓ workaround
topbar.classList.add('remove-topbar')
var style = document.createElement('style')
style.innerHTML = '.remove-topbar{transition:transform 0s !important}'
document.head.appendChild(style)
/*按坐标查找顶栏*/
var topbar
var el=document.elementFromPoint(document.documentElement.clientWidth-200,20)
while(el){
如果(getComputedStyle(el).position=='fixed')topbar=el
el=el.parentNode;
如果(el==document.body)中断
}
if(topbar==未定义)返回
/*禁用位置:固定*/
//topbar.style.position='绝对'
// ↑ 这一行不太好用,因为有时offsetParent不是
// ↓ 变通办法
var paint=函数(强制){
var scrollTop=document.documentElement.scrollTop | | document.body.scrollTop
风险值阈值=200
如果(!enforce&&scrollTop>threshold*3)返回
变量偏移=滚动顶部/阈值
如果(偏移量>1.2)偏移量=1.2
topbar.style.transform='translateY(-'+offset*100+'%)'
}
绘制(true)//初始化
document.addEventListener('scroll',()=>paint())
/*当使用JS频繁更改CSS值时,请禁用CSS转换以避免奇怪的延迟*/
//topbar.style.transition='transform 0s'
// ↑ 由于兼容性问题,此行无法工作
// ↓ 变通办法
topbar.classList.add('remove-topbar')
var style=document.createElement('style')
style.innerHTML='.删除顶栏{转换:转换0s!重要}'
document.head.appendChild(样式)
用户脚本:
你可能会制作自己的FF插件,因为我怀疑它是否存在。但你可能会破坏很多东西。(根据我的回答,可以随意添加[javascript]和/或[userscript]标记。)你可以做一个书签。当你导航到该网站时,你可以单击浏览器窗口中的一个按钮,它就会消失。给我一个mo来阅读它,我会再看一看。你使用的浏览器是什么?你会破坏很多这样的布局。你可能会使事情比现在更困难。谢谢你!如果我让一个bookmarklet说“javascript:alert(document.links[0].href)”,这样就行了,但如果我让一个bookmarklet说“javascript:var x=document.querySelectorAll('*');for(var I=0;I
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
$("header").css('position', 'absolute');
javascript:(function(){x=document.querySelectorAll('*');for(i=0;i<x.length;i++){if(getComputedStyle(x[i]).position=="fixed"){x[i].style.position="absolute";}}}())
javascript:(function(){x=document.querySelectorAll('*');for(i=0;i<x.length;i++){elementStyle=getComputedStyle(x[i]);if(elementStyle.position=="fixed"||elementStyle.position=="sticky"){x[i].style.position="absolute";}}}())
var x = document.querySelectorAll('*');
for(var i=0; i<x.length; i++) {
elementStyle = getComputedStyle(x[i]);
if(elementStyle.position=="fixed" || elementStyle.position=="sticky") {
x[i].style.position="absolute";
}
}
/* find the topbar by coordinate */
var topbar
var el = document.elementFromPoint(document.documentElement.clientWidth - 200, 20)
while (el) {
if (getComputedStyle(el).position == 'fixed') topbar = el
el = el.parentNode;
if (el == document.body) break
}
if (topbar == undefined) return
/* disable position:fixed */
// topbar.style.position = 'absolute'
// ↑ this line doesn't work well, because sometime offsetParent is not <body>
// ↓ workaround
var paint = function (enforce) {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
var threshold = 200
if (!enforce && scrollTop > threshold * 3) return
var offset = scrollTop / threshold
if (offset > 1.2) offset = 1.2
topbar.style.transform = 'translateY(-' + offset * 100 + '%)'
}
paint(true) // initialize
document.addEventListener('scroll', () => paint())
/* when use JS to frequently change CSS value, disable CSS transition to avoid weird delay */
// topbar.style.transition = 'transform 0s'
// ↑ this line doesn't work because of compatibility
// ↓ workaround
topbar.classList.add('remove-topbar')
var style = document.createElement('style')
style.innerHTML = '.remove-topbar{transition:transform 0s !important}'
document.head.appendChild(style)