Javascript 如何禁用网页中的位置:已修复?

Javascript 如何禁用网页中的位置:已修复?,javascript,html,css,firefox,bookmarklet,Javascript,Html,Css,Firefox,Bookmarklet,本网站: 有一个非常恼人的标题,总是在屏幕上,不会滚动离开 如果我右键单击它并在firefox中“inspect element”,那么我会发现css包含“position:fixed;”,如果我取消选中该选项,标题将正常运行,并像上帝希望的那样滚动 有没有办法让firefox自动完成这项工作,即在呈现页面之前从所有页面中删除所有位置:固定行 编辑------- 经过一段时间的思考,我想要的是一个书签,它将杀死这类东西 那么,如何让SciMonster看起来前途无量: var x = docu

本网站:

有一个非常恼人的标题,总是在屏幕上,不会滚动离开

如果我右键单击它并在firefox中“inspect element”,那么我会发现css包含“position:fixed;”,如果我取消选中该选项,标题将正常运行,并像上帝希望的那样滚动

有没有办法让firefox自动完成这项工作,即在呈现页面之前从所有页面中删除所有位置:固定行

编辑-------

经过一段时间的思考,我想要的是一个书签,它将杀死这类东西

那么,如何让SciMonster看起来前途无量:

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)