์ด์ GM_openInTab์ด ๋ ์ด์ ์ฐฝ ๊ฐ์ฒด๋ฅผ ๋ฐํํ์ง ์์ผ๋ฏ๋ก ์ฐฝ์ ์ฌ๋ ์คํฌ๋ฆฝํธ์์ ์ฐฝ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ป๊ฒ ๊ณ ์ ํ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ํด๋น ํญ์ ๋ํด ์ง์ ๋ ํญ์ ์ ๋ฌํ ์ ์์ต๋๊น?
https://github.com/greasemonkey/greasemonkey/issues/2134 ๋ ์ฐธ์กฐํ์ญ์์ค.
(์ปจํ
์คํธ์๋ง ์ฌ์ฉ)
์ด๋ ๋จ์ํ GM_openInTab์ด null์ ๋ฐํํ๋ค๋ ๊ฒ์ ํ์ธํ์ง๋ง ๋ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฐธ์กฐํ์ง๋ ์์ต๋๋ค.
ํ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ URL์ ์ต์ปค๋ฅผ ์ถ๊ฐํ๊ณ ํด๋น ์ต์ปค๋ฅผ ์คํฌ๋ฆฝํธ ํ๋ก์ธ์ค๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ๋ ํฐ ํ์ด๋ก๋์ ๊ฒฝ์ฐ ํด๋น ์ต์ปค๋ฅผ ID๋ก ์ฌ์ฉํ ๋ค์ ๋ธ๋ก๋์บ์คํธ ์ฑ๋ ์ ์ฌ์ฉํ์ฌ ํญ์ด ์๋ก ํต์ ํ๋๋ก ํ ์ ์์ต๋๋ค.
์น ์ฝํ ์ธ ๋ ์ด๋ฌํ ์ข ๋ฅ์ ํต์ ์ฑ๋์ ๋ฃ๊ณ ์กฐ์ํ ์ ์์ต๋๋ค.
๋๋ ๋ฐ๋ก ๊ทธ ์ด์ ๋ก ์ต์ปค๋ฅผ ํผํ ๊ฒ์ ๋๋ค.
GM_info.uuid
๋ ์ด๋ธ ์ปค๋ฎค๋์ผ์ด์
์ฑ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ+์ปดํจํฐ+ํ๋กํ์ ๊ณ ์ ํ ์คํฌ๋ฆฝํธ UUID๋ก ์ถฉ๋ถํ ์์ ํฉ๋๋ค.
์ถ์ : ๋ฉํ๋ฐ์ดํฐ ๋ธ๋ก์์ // <strong i="8">@grant</strong> GM_info
๋ฅผ ์์ง ๋ง์ญ์์ค.
์ ํ์ด์ง์์ ์คํ๋๋ ๋์ผํ ์คํฌ๋ฆฝํธ๊ฐ ์๋๋ผ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ ๊ฐ์ ํต์ ์ ์ํ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
@Sasstraliss "์๋ก ๋ค๋ฅธ ์คํฌ๋ฆฝํธ ๊ฐ์ ํต์ ์ ์ํ ๊ฒ"์ด๋ผ๊ณ ์๊ฐํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์ UUID๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ ๋์ผํ UUID๋ง ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ฌ๊ธฐ reddit์์ ๋ฐฐ์ด ํธ๋ฆญ์ด ์์ต๋๋ค. ๋ณ์์ ๊ดํ ํ ์๋นํ ์์ ์์ฌ ์ฝ๋๊ฐ ์์ง๋ง ๋์์ด ๋ ์ ์์ต๋๋ค. ๋์ ์ฐฝ๊ณผ ๋ถ๋ชจ ์ฐฝ์ด ์ฌ์ดํธ์ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ์คํฌ๋ฆฝํธ๋ ...
var stringData;
var awakener = window.opener || window.parent;
if(awakener && awakener != window)
{
//Used when a page is launched from a link so that passData can...well...pass data. But we can't use onload from there so instead we're using postMessage here to convey to the "parent" window that this window is ready to recieve data
awakener.postMessage("Loaded","*");
}
window.addEventListener("message", messageDetected, false);
clickableThing.onclick = function() {
var newWindow = window.open(this.href,this.target);
passData(window,newWindow,dataToPass);
return false;
};
function messageDetected(event)
{
if(typeof(event.data) == "string" && event.data != "Loaded")
{
stringData = event.data;
}
}
function passData(mainWindow,target,data)
{
mainWindow.addEventListener("message", passItOn, false);
function passItOn(event)
{
if(event.source == target) target.postMessage(data,"*");
}
}
@DoomTay , ์์ค ํ์์ ์ ์งํ๋ ค๋ฉด 3์ค ์ญ๋ฐ์ดํ ๋ฅผ ์ฌ์ฉํ์ธ์.
@ the8472 ๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํ์ต๋๋ค.
๋ฐฉ์ก ์ฑ๋ ์ฌ์ฉ
์์, ์ด๊ฒ์ Fx38+์์๋ง ์ฌ์ฉํ ์ ์๋ ์คํ์ ์ธ ๊ธฐ์ ์ ๋๋ค. ๋ ์ ์ ํ ์๋ฃจ์ ์ localStorage API ๋ฐ ์คํ ๋ฆฌ์ง ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. http://stackoverflow.com/questions/2236828/javascript-communication-between-tabs-windows-with-same-origin/12514384#12514384 ์ฐธ์กฐ