Skip to content

Instantly share code, notes, and snippets.

@furyutei
Last active April 22, 2020 01:23
Show Gist options
  • Save furyutei/925358512fa3078236f8f87e85c036b4 to your computer and use it in GitHub Desktop.
Save furyutei/925358512fa3078236f8f87e85c036b4 to your computer and use it in GitHub Desktop.
GM_setValue()した値が反映されない例

TampermonkeyでのGM_setValue()/GM_getValue()の不具合確認

window.open() により開いたページ上で GM_setValue() で値を保存し、すぐにページを閉じたあと、元のページでGM_getValue()をするとundefinedが返ってくる場合がある。
※Google Chrome バージョン: 65.0.3325.181(Official Build) (64 ビット)+ Tamplermonkey v4.5 で発生

テスト用ユーザースクリプト

  1. test-GM_xxValue.user.js

テスト方法

Tampermonkeyで上記のユーザースクリプトをインストールし、
テスト用ページ にアクセス。
値が正常に保存されていれば、延々とタブを開いたり閉じたりを繰り返すが、値が保存されていないと停止してしまう。
※ログはデベロッパーツールのコンソールを参照。

// ==UserScript==
// @name test-GM_xxValue
// @namespace http://furyu.hatenablog.com/
// @author furyu
// @version 0.1
// @include https://nazo.furyutei.work/test/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @description test-GM_xxValue
// ==/UserScript==
( function () {
'use strict';
var TEST_WINDOW_NAME = 'test-gm_xxValue';
function test () {
GM_deleteValue( 'TEST' );
var child = window.open( '/test/GM_xxValue-popup/', TEST_WINDOW_NAME ),
timer_id = setInterval( function () {
try {
if ( child.closed ) {
clearTimeout( timer_id );
var value = GM_getValue( 'TEST' );
if ( value ) {
console.log( 'TEST=', value );
test();
}
console.error( 'Unexpected result: TEST=', value );
return;
}
}
catch ( error ) {
console.error( error );
}
}, 10 );
}
if ( /\/GM_xxValue\/?$/.test( location.href ) ) {
test();
}
else if ( window.name == TEST_WINDOW_NAME ) {
GM_setValue( 'TEST', new Date().getTime() );
var value = GM_getValue( 'TEST' );
if ( value ) {
window.open( '', '_self', '' );
window.close();
}
console.error( 'Unexpected result: TEST=', value );
}
} )();
@furyutei
Copy link
Author

furyutei commented Apr 9, 2018

GM_setValue()の問題点(?)

window.open() により開いたページ上で GM_setValue() で値を保存し、すぐにページを閉じたあと、元のページでGM_getValue()をするとundefinedが返ってくる場合がある。
※Google Chrome バージョン: 65.0.3325.181(Official Build) (64 ビット)+ Tamplermonkey v4.5 で発生

テスト方法

Tampermonkeyで上記のユーザースクリプトをインストールし、
https://nazo.furyutei.work/test/GM_xxValue
にアクセス。
値が正常に保存されていれば、延々とタブを開いたり閉じたりを繰り返すが、値が保存されていないと停止。
※ログはデベロッパーツールのコンソールを参照。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment