你能帮我解决我的第一个关键词吗?我是一个完全的初学者,会非常感谢你的帮助。我已经尝试了很多,但总是失败。 (编辑:我现在有一些工作)
►简而言之,我想从奥地利报纸 (“Kurier”) 文章中抓住byline并添加它(略微修改了文章的打印视图。
所以这是greasemonkey脚本应该做的事情(没有外部脚本,如jquery ):
第4步:将署线粘贴到打印视图页面
每个步骤的评论:
[第1步]:完成
每篇文章的打印视图位于[article URL] + "/print"
,
例如:
文章网址:https://kurier.at/wissen/mars-simulation-auf-hawaii/249.106.702
打印视图网址:https://kurier.at/wissen/mars-simulation-auf-hawaii/249.106.702/print
这对我有用:
// ==UserScript==
// @name KURIER printview
// @include https://kurier.at/*
// @exclude https://kurier.at/*/print
// @version 1
// @run-at document-start
// ==/UserScript==
window.location.replace(window.location + "/print");
我使用@exclude
来避免无限循环。
为了不减慢脚本速度,如果@run-at document-start
可以保持不变,那将是很好的,这样脚本就不必渲染文章页面而是直接跳转到printview URL。因此,只需要呈现1页而不是2页。
(我希望第2步可以从printview位置完成 - 或者从文章页面完成,但不渲染它?任何一种方法都可以避免渲染2页。)
[第2步]:完成
byline是一个div容器,有三种不同的形式(取决于作者的数量):
•没有作者:<div class="misc no-author">
•单一作者:<div class="misc single-author has-image">
•多位作者:<div class="misc multiple-authors">
以下是每种类型的示例文章:
- 没有作者:https://kurier.at/wissen/mars-experiment-auf-hawaii/218.311.221
- 单一作者:https://kurier.at/wissen/mars-simulation-auf-hawaii/249.106.702
- 多位作者:https://kurier.at/wissen/mars-wann-ist-es-soweit/230.174.316
这会让我们得到div容器:
var $byline = document.getElementsByClassName("misc");
byline是页面上的第一个div.misc,因此byline现在位于$byline[0]
。
[第3步]
byline div容器具有以下结构:
<div class="misc [no-author/single-author/multiple-authors]">
|__ [optional content]
|__ <div class="last-modified">
|__ <div class="social-media-container">
|__ <div class="clear">
a)应删除社交媒体容器
b)(已完成)可选内容可能包含图片
图片网址方案为:https://images.kurier.at/[imagename].jpg/[size]x[size]/[imageID]
如果存在图像,则应从:
<img width="35" height="35" src="https://images.kurier.at/Sandra-
Lumetsberger(2)-REdit.jpg/70x70/133.396.913" alt="Sandra Lumetsberger">
到
<img width="100" height="100" src="https://images.kurier.at/Sandra-
Lumetsberger(2)-REdit.jpg/200x200/133.396.913" alt="Sandra Lumetsberger">
我只找到了这个快速而又肮脏的解决方案:
document.body.innerHTML = document.body.innerHTML.replace(
/height="35" width="35"/g,
'height="100" width="100"').replace("/70x70/", "/200x200/");
[第4步]
printview页面具有以下结构:
<body>
|__ <script>
|__ <div class="wrapper">
|__ <header class="header">
|__ <div class="rfloat noprint">
|__ <p class="open12 marginb10">
|__ <div class="clear">
|__ <article>
在步骤2中复制并在步骤3中修改的byline div应粘贴在p元素下面。
非常感谢你!
答案 0 :(得分:1)
更改为其他URL时,将释放脚本范围,并在下一页上启动新脚本运行。所以你不能直接传输数据。
查看GM_getValue()&amp; GM_setValue()函数。
您还需要在标题中加入@grant。
还有一些其他技术可以在页面之间交换数据
我推荐AJAX变体,但这取决于你想要获得的行为。