inoreader full content in iframe(需要配合辅助插件修改响应头,允许跨域iframe展示,例如 ignore-x-frame-headers 在tagArr,数组添加想要注入脚本文件夹名
// ==UserScript==
// @name inoreader full
// @namespace http://tampermonkey.net/
// @version 0.1
// @description inoreader full content in iframe(需要配合辅助插件修改响应头,允许跨域iframe展示,例如 ignore-x-frame-headers 在tagArr,数组添加想要注入脚本文件夹名
// @author You
// @match https://www.inoreader.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=inoreader.com
// @grant none
// @license Apache-2.0
// ==/UserScript==
(function() {
'use strict';
const tagArr=['feeddd-wechat-rss','github']//允许跨域的文件夹名放这里
function includesTags(){
const firstTag=document.querySelector('.article_tags').firstChild.textContent
return tagArr.includes(firstTag)
}
let lastUrl
setInterval(interval,500)
function interval(){
//增加点击即开
onclick()
const articleTitle=document.querySelector('.article_title ')
if(!articleTitle||!includesTags()) {
lastUrl = undefined
return
}
const articleUrl=document.querySelector('.article_title a').href
const articleArr = document.querySelector('#reader_pane').querySelectorAll('.article')
if(lastUrl!=articleUrl){
lastUrl=articleUrl
console.log('正在替换iframe:',articleUrl)
let articleContent=document.querySelector('.article_content')
const frame=createFrame(articleUrl,articleContent)
Array.from(articleContent.childNodes).forEach((i)=>articleContent.removeChild(i))
articleContent.appendChild(frame)
}else{
//todo 实时调整下高度?跨域好像不太行
}
}
function getNextArrHeight(element){
let arr=[]
let next=element.nextElementSibling
while (next!=null){
arr.push(next)
next=next.nextElementSibling
}
return arr.reduce( (previousValue, currentValue) => previousValue + currentValue.clientHeight ,0)
}
function createFrame(url,articleContent){
console.log('click',url)
const iframeElement = document.createElement(`iframe`);
iframeElement.className = `articleEmbed`;
iframeElement.src = url
iframeElement.style.width="100%";
iframeElement.style.height=`calc(100vh - ${getNextArrHeight(articleContent)}px)`;//没啥意义,就先这样吧
iframeElement.style.height="100vh";
iframeElement.sandbox="allow-scripts allow-same-origin allow-popups"//用sandbox属性禁止跳转,reddit这种就没办法了
//iframeElement.security="restricted"//IE的禁止js的功能
return iframeElement
}
function onclick(){
const articleArr = document.querySelector('#reader_pane').querySelectorAll('.ar')
articleArr.forEach((i)=>{
if(!i.querySelector('.myClickButton')){
const title=i.querySelector('.article_header_title').textContent
const div=document.createElement('div')
div.style.width="100px"
div.style.height=i.clientHeight+"px"
const blank=document.createElement('div')
blank.textContent=" "
blank.style.width="100%"
blank.style.height="10%"
const a=document.createElement('a')
a.type="button"
a.classList.add("myClickButton");
a.href=i.querySelector('a').href
a.target="_blank"
const a2=document.createElement('button')
a2.textContent='open'
a2.style.width="100%"
a2.style.height="40%"
a.appendChild(a2)
//a.onclick=()=>window.open(i.querySelector('a').href)
// a.addEventListener('mousedown', ()=>{
// if (event.button == 0) {
// console.log("鼠标左键!")
// window.open(i.querySelector('a').href)
// }else if (event.button == 2){
// console.log("鼠标右键!");
// const test=document.createElement('a')
// test.href=i.querySelector('a').href
// const middleClick = new MouseEvent("click", { "button": 1, "which": 4 });
// test.dispatchEvent(middleClick);
// }else if(event.button == 1){
// console.log("鼠标滚轮!");
// }
// })
const button=document.createElement('button')
button.textContent='copy'
button.style.width="100%"
button.style.height="40%"
button.onclick=()=>{
if (navigator.clipboard) {
navigator.clipboard.writeText(`[${title}](${i.querySelector('a').href})`);
}
}
div.appendChild(a)
div.appendChild(blank)
div.appendChild(button)
i.firstElementChild.appendChild(div)
}
})
}
})();