站内王一之大佬写的解决跨域问题的两个方法,都看了,不知道具体怎么才能解决在iframe的页面上执行脚本,并返回页码数,目前的想法是设置全局变量n,在iframe界面运行脚本,改变变量n
基本油猴编程的一些常见误区
stackOverflow上有个相关回答,采用postMessage()进行跨域通信,实在搞不动怎么用到我这个脚本
Blocked a frame with origin from accessing a cross-origin frame
针对全国招投标公告打印不全,写了一个脚本,PDF的页数的ID = ‘numPages’,用document.getElementById('numPages')定位或者document.querySelector('#numpages'),元素都获取不到,提示Blocked a frame with origin from accessing a cross-origin frame,
目前采用的是弹窗输入,解决页数的问题。但是发现很多页面都是有iframe,所以想搞清楚到底要怎样才能自由的获取iframe中的元素
下面是需要脚本运行的示例界面
https://ctbpsp.com/#/bulletinDetail?uuid=0f54093b-3869-4611-b2b5-71fd465e2670&inpvalue=2022%E5%B9%B4%E6%B9%96%E5%8D%97%E4%B8%AD%E7%83%9F%E7%A7%91%E7%A0%94%E8%AE%BE%E5%A4%87&dataSource=1
// @name 调整打印文件
// @namespace print adjust
// @match https://ctbpsp.com/#/bulletinDetail?uuid=*
// @match https://bulletin.cebpubservice.com/qualifyBulletin/*
// @match https://bulletin.cebpubservice.com/biddingBulletin/*
// @match https://bulletin.cebpubservice.com/candidateBulletin/*
// @match https://bulletin.cebpubservice.com/resultBulletin/*
// @run-at document-end
// @grant unsafeWindow
// @version 1.2.2
// @author 我爱小熊啊
// @description cebpubservice.com 文件加载时间较长,遇到未加载完成的,页码输入界面点击取消,文件加载完后,记住页码,刷新输入页码,等待加载完成
// @description 将 ctbpsp.com 与 cebpubservice.com 的等待时间做区分
// @description 自动隐藏 cebpubservice.com 上的二维码广告
// @description 增加对 cebpubservice.com的支持
// @description 中国招标投标公共服务平台公告文件打印调整
// @description 2022/8/3 08:33:33
// @license MIT
// ==/UserScript==
// 设置延时定时器,避免网页未加载完,弹出页码输入框
setTimeout(function(){
var weburl = window.location.href;
var n = 1;
// ctbpsp.com 网页打印
if(weburl.indexOf('ctbpsp.com')!=-1){
// var windowAttribute = $('iframe'); ??? 引入 jQuery 库也不生效
var windowAttribute = document.getElementsByTagName('iframe')[0];
n = prompt('请输入文件页码','');
if(n){ // 如果输入框点击取消,则 prompt 返回的是 null,则取消更改,否则网页会出错
windowAttribute.width = 900;
windowAttribute.height = 1150 * n;
// alert("Hello");
}
}
// cebpubservice.com 网页打印
if(weburl.indexOf('cebpubservice.com')!=-1){
setTimeout(function(){
var p = document.getElementsByClassName('pdf_wraper')[0];
var b = document.getElementsByClassName('PublicAddress')[0];
b.style.display = 'none';
// var n = prompt('请输入文件页码','');
n = prompt('请输入文件页码','');
if(n){
p.style.width = '900px';
var h = n * 1150;
var gaodu = h + 'px';
p.style.height = gaodu;
}
}, 6000);
}
}, 3000);