油猴跨域数据传输脚本
Posted papermoon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了油猴跨域数据传输脚本相关的知识,希望对你有一定的参考价值。
利用多页面共享的脚本,
可以实现利用油猴跨域共享页面数据。
// ==UserScript==
// @name 跨页面数据传输脚本
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 利用共用脚本实现跨域通讯
// @connect *
// @author dzt
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_removeValueChangeListener
// @grant GM_addValueChangeListener
// @run-at document-end
// @match 页面A
// @include 页面B
// @include 页面C
// ==/UserScript==
(function() {
\'use strict\';
unsafeWindow.__t_sendCrossDomainMessage= function(data){
let __source = location.href;
let __domain = document.domain;
//利用createObjectURL生成不重复的uuid
const __url = URL.createObjectURL(new Blob());
const uuid = __url.substring(__url.lastIndexOf(\'/\') + 1);
console.log(\'生成新的crossDomainMessage-uuid:\',uuid);
GM_setValue(\'data\',data);
GM_setValue(\'source\',__source);
GM_setValue(\'domain\',__domain);
GM_setValue(\'uuid\',uuid);//触发数据变更
}
//ValueChangeListener需要使用值类型的变化来触发,这里使用了uuid字符串触发
//fn可选加入数据源判断
unsafeWindow.__t_onReceiveCrossDomainMessage = function(fn){
GM_removeValueChangeListener(\'uuid\');
GM_addValueChangeListener(\'uuid\',(name,oldValue,newValue,remote)=>{
//console.log(name,oldValue,newValue,remote);
console.log(\'crossDomainMessage-uuid 已改变\',\'crossDomainMessage-uuid is Change!!\');
let uuid = newValue;
let data = GM_getValue(\'data\');
let source = GM_getValue(\'source\');
let domain = GM_getValue(\'domain\');
return fn({uuid,data,source,domain,source});
})
}
// Your code here...
})();
以上是关于油猴跨域数据传输脚本的主要内容,如果未能解决你的问题,请参考以下文章