見せるリンク
URLにタイトルをつける
idが振られているページだとURLだけでは内容が
URLのハッシュ部#を使って
この手法って,scrapboxの#.jpgで学んだものじゃないか?
引用元のドメインも重複するが,入れてあげれば,引用文の後にかける
本文とURL重複するの気持ち悪いし
%20が目障り
空白を意味する
Scrapboxの文字が一文字ごとにタグで囲われているおかげ
以前はidで空白がある場合に使われる_を使っていたが,
それ以外はサーバーに送られるので,サーバー側の実装によって消されたり,エラーの原因になる
サーバーに送られずともクライアント側でエラーになる事例
テキストフラグメントを消してくる
window.location.hashからhistory.replaceStateに変えたら解決
なんか再読み込みしているんだろうな
コンテキストメニューからも取得できるようにするか
テキストフラグメントを消してくる
history.replaceStateに変えてもだめ
読み込み時で誰かに上書きされてる
任意のタイミングで実行したときはうまくいく
結構あるな
よくわからないwebサイトの不具合の原因になってしまう
結構良さげだぞ
code:core.js
const title = (ogTitle && ogTitle.getAttribute('content')) || document.title;
location.hash = encodeURIComponent(title);
code:_.js
function updateHash() {
const title = (ogTitle && ogTitle.getAttribute('content')) || document.title;
if (title) {
location.hash = encodeURIComponent(title);
}
}
document.addEventListener("DOMContentLoaded", () => {
// 初回実行
updateHash();
// <title> 要素の変更監視
const titleEl = document.querySelector('title');
if (titleEl) {
const observerTitle = new MutationObserver(updateHash);
observerTitle.observe(titleEl, {
childList: true,
characterData: true,
subtree: true
});
}
// <meta property="og:title"> の変更監視
if (metaEl) {
const observerMeta = new MutationObserver(updateHash);
observerMeta.observe(metaEl, {
attributes: true,
});
}
});
updateHash();
arcの場合はオムニバーでURLエンコードされてしまう
scrapboxにペーストすると,自動でデコードしてくれる
デコードの仕方に問題あり,デコードされるとリンクが効かなくなる音がある
%25とか
デコードの仕方もいろいろありそう
エスケープを残したデコードをやりたい
scrapboxにこれをやってもらわなきゃならんがどうしたら
scrapboxに渡す手前で,エンコードを二重にすりゃいいんじゃね??
scraoboxでしか需要ないので,scrapboxのUserscriptに組み込みたいが行けるか?
昔の自分ありがとう
地味に便利
前からこうだったけ?
twitterは考え所だな
タグが追加されるまで時間がかかる
span[data-char="t"]:nth-of-type(2)とかは,span[data-char="t"]でかつspan:nth-of-type(2)になってしまう.
2番目のtをとかを指定したい.
span:nth-child(3 of [data-char="/"])でできるみたい
scrspboxの名前付きリンク使えば良くね?
URLをコピーすればいいので楽
グリッドビューだと,生のまま見えてしまう
後方互換性のためにハッシュがないものは,一番最後のパスを題名代わりに
ハッシュがあるものは,最後のパスを添えて
これは自然に実装されていた
クエリは基本的に非表示に
検索クエリは+を空白に直してあえて表示する
翻訳している時は?
どちらもテキストフラグメントでぶち込もう
ヒットする方だけがハイライトされる
code:.js
waitForElement('title',() => {
code:.js
history.replaceState(
null,
'',
'#'
+ window.location.hash
|| ':~:'
+ encodeURIComponent(document.title)
.replace(/-/g, '%2D')
.replace(/,/g, '%2C')
.replace(/&/g, '%26')
);
code:.js
})
function waitForElement(selector, callback) {
const el = document.querySelector(selector);
if (el) {
callback(el);
return;
}
const observer = new MutationObserver(() => {
const el = document.querySelector(selector);
if (el) {
callback(el);
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
}