Chromeのブラウザ設定を使用して、インターネット上のすべてのページを1つのウィンドウに保持する方法はありますか?または私がこれを行うことができるアドオン/プラグイン?
一部のリンクをクリックしたときに、新しいタブや新しいウィンドウでWebページが開かないようにします。
誰か提案があれば教えてください!、ありがとう!!
<a href="http://www.bing.com" target="_blank">Opens a New Tab!</a>
<i>Thtats not what i want..., I want this link to stay in same url bar.</i>
<p>Like this!</p>
<a class="click" href="http://www.bing.com">Click Here</a>
1つのアプローチは、すべてのページにコンテンツスクリプトを挿入する拡張機能を構築することです。このコンテンツスクリプトはDOMを解析し、 アンカー要素からすべてのアンカー要素のすべてのtarget
属性を削除しますtarget
属性を__self
_に設定します。
window.open()
を使用できます)。MutationObserverを使用して、アンカー要素が挿入されているか、target
属性が変更されているかを監視して作成できます。適切な調整。
それがあなたにとって非常に重要である場合、あなたはまだ他の手段(例えばwindow.open()
)によって開かれたタブの世話をする必要があります(しかしそれらのケースは非常に少ないはずなので、トラブルの価値がないかもしれません)。
manifest.json:
_{
"manifest_version": 2,
"name": "Test Extension",
"version": "0.0",
"content_scripts": [{
"matches": ["*://*/*"],
"js": ["content.js"],
"run_at": "document_start",
"all_frames": true
}]
}
_
content.js:
_/* Define helper functions */
var processAnchor = function(a) {
//if (a.hasAttribute('target')) {
// a.removeAttribute('target');
//}
a.setAttribute('target', '_self');
};
/* Define the observer for watching over inserted elements */
var insertedObserver = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
var inserted = [].slice.call(m.addedNodes);
while (inserted.length > 0) {
var elem = inserted.shift();
[].slice.call(elem.children || []).forEach(function(el) {
inserted.Push(el);
});
if (elem.nodeName === 'A') {
processAnchor(elem);
}
}
});
});
/* Define the observer for watching over
* modified attributes of anchor elements */
var modifiedObserver = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
if ((m.type === 'attributes') && (m.target.nodeName === 'A')) {
processAnchor(m.target);
}
});
});
/* Start observing */
insertedObserver.observe(document.documentElement, {
childList: true,
subtree: true
});
modifiedObserver.observe(document.documentElement, {
attributes: true,
substree: true
});
_