具体的には、`logbook.qrz.com` のページを新しいタブに iframe として読み込み、自動的にクエリを実行する。

// ==UserScript==
// @name QRZ.com の QSO ログ記録表示
// @namespace http://tampermonkey.net/
// @version 1.0
// @description QRZ のコールサインページに「私の QSO」タブを追加し、関連するログ記録を表示
// @author BG6QED
// @match https://www.qrz.com/db/*
// @match https://logbook.qrz.com/*
// ==/UserScript==
(function() {
'use strict';
// QRZ のコールサイン詳細ページを処理
if (window.location.hostname === 'www.qrz.com' && ```
/db/.test(window.location.pathname) {
// 通信名を取得
const callsign = window.location.pathname.split('/db/')[1].toUpperCase().replace(/\/$/, '');
// タブナビを検索
const tabsNav = document.querySelector('ul.ui-tabs-nav');
if (!tabsNav) return;
// 新しいタブとパネルを作成して挿入
const tabId = 't_qso';
tabsNav.insertBefore(
Object.assign(document.createElement('li'), {
className: 'ui-state-default ui-corner-top',
innerHTML: `<href="#${tabId}" class="ui-tabs-anchor" id="ui-id-5">私の QSOについて</a>```
}),
tabsNav.querySelector('li:has(input[onclick*="logbook.qrz.com/logbook/?op=add"])') || tabsNav.lastChild
);
const newPanel = Object.assign(document.createElement('div'), {
id: tabId,
className: 'ui-tabs-panel ui-widget-content ui-corner-bottom',
style: 'display: none',
innerHTML: ``
```<iframe id="qsoIframe" style="幅:100%;高さ:800px;境界線:なし;"></iframe>```javascript
});
tabsNav.parentNode.appendChild(newPanel);
// タブの切り替え処理
const handleTabClick = (tabLi, targetId, isNew) => {
```> e => {
e.preventDefault();
// 元のイベントを実行
if (!isNew) tabLi.querySelector('a').click();
// タブとパネルの状態を更新
tabsNav.querySelectorAll('li').forEach(li => {> {
const active = li === tabLi;
li.classList.toggle('ui-tabs-active', active);
li.classList.toggle('ui-state-active', active);
});
document.querySelectorAll('.ui-tabs-panel').forEach(panel => {> {
panel.style.display = panel.id === targetId ? 'block' : 'none';
});
// iframeのロード
if (isNew) {
newPanel.querySelector('iframe').src =
`https://logbook.qrz.com/?autosearch=${encodeURIComponent(callsign.toLowerCase())}`;
}
};
// イベントのバインディング
const newTab = tabsNav.querySelector(`li:has(a[href="#${tabId}"])`)
newTab.querySelector('a').addEventListener('click', handleTabClick(newTab, tabId, true));
tabsNav.querySelectorAll('li:not(:last-child)').forEach(li => {
const anchor = li.querySelector('a');
if (anchor) {
anchor.addEventListener('click', function(event) {
event.preventDefault();
handleTabClick(li, anchor.getAttribute('href').slice(0, -1));
});
}
}(1)、false));
});
}
// ログブックページの自動検索を処理
else if (window.location.hostname === 'logbook.qrz.com') {
const searchTerm = new URLSearchParams(window.location.search).get('autosearch');
if (searchTerm) {
const interval = setInterval(()=> {
document.getElementById('search'). && `typeof goto === 'function'` {
searchInput.value = searchTerm;
goto('search');
clearInterval(interval);
}
}, 500);
setTimeout(() => {> clearInterval(interval), 10000);
}
})();