我想知道是否有一种方法可以同时扩展网页上所有可折叠的部分。我正在查看的网页上的相关部分如下:
<tr>
<td></td>
<td style="..;">
<div style="..">
<span id=".." style="display:inline;"><br />
<div style="display:inline"> ...
</div>
</span>
<span id="toHide1234" style="display:none;"><br />
<div style="display:inline">
<p>.....</p>
</div>
</span>
<a id="expcoll1234" href="JavaScript:expandcollapse('expcoll1234',1234)">
expand
</a>
</div>
</td>
</tr>
如上文所示,通过单击expand
链接,本节将展开。麻烦的是,在我感兴趣的网页上有数百个这样的expand
链接,而且有很多这样的网页我想这样做。
如果对此有任何想法,我将不胜感激。我需要一个非常简单的方法来做到这一点,因为我不是很精通网络编程。只知道非常基本的HTML。
发布于 2018-07-04 17:14:15
所以你想在一个不受你控制的网站上使用这个?然后,您就限制了首先将自己的JavaScript代码插入到其中的可能性。如果目标站点没有通过CSP阻止这一点,那么它也许可以在浏览器控制台或“bookmarklet”上工作。
如果只获取HTML中的“原始数据”是这里的目标,那么您最好的选择可能是完全禁用浏览器中的样式--这也覆盖了诸如style="display:none;"
之类的内联内容,因此从一开始就应该可以看到所有的东西。
正如您在评论中所说的,https://superuser.com/questions/447269/is-there-any-way-to-view-a-webpage-without-styles-in-chrome导致了uMatrix浏览器扩展,所以如果这对您的目的有效-完美;-)
发布于 2018-07-04 13:21:44
假设所有隐藏部分都有格式为"toHide" + some numbers
的id,您可以在页面上找到所有<span>
元素,并按id筛选它们并更改display
样式:
Array.from(document.getElementsByTagName('span'))
.filter(span => span.id.startsWith('toHide'))
.forEach(span => { span.style.display = ''; });
发布于 2018-07-04 13:28:40
您可以使用jQuery来完成这个任务。
首先,您可能希望给每个展开“展开”类或什么的div
,就像“折叠”类一样,将元素的高度设置为0(或者您正在折叠元素)。
<div class=“expand collapsed …”>
…
</div>
<div class=“expand collapsed…”>
…
</div>
然后,您可以同时选择所有这些<div>
并删除折叠的类,如下所示:
$(‘.expand’).removeClass(‘collapsed’);
您可以将该行插入函数中,并通过将按钮的onClick
属性设置为函数的名称在按钮上按下调用该函数。
另一种方法是使用像引导-Bootstrap这样的库,它有一个可爱的崩溃机制。
https://stackoverflow.com/questions/51174478
复制相似问题