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']//允许跨域的文件夹名放这里
function includesTags(){
const firstTag=document.querySelector('.article_tags').firstChild.textContent
return tagArr.includes(firstTag)
}
let lastUrl
setInterval(interval,500)
function interval(){
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-top-navigation"//用sandbox属性禁止跳转,比如reddit的帖子
return iframeElement
}
const articleTitle=document.querySelector('.article_title ')
const articleArr = document.querySelector('#reader_pane').querySelectorAll('.article')
articleArr.forEach((i)=>{
i.onclick=()=>(console.log(1234))
const frame=createFrame(i)
let articleContent=document.querySelector('.article_content')
Array.from(articleContent.children).forEach((i)=>articleContent.removeChild(i))
articleContent.appendChild(overlayContainerElement)
})
})();