كيفية تعديل موقع URL الحالي في Chrome عبر ملحقات
-
19-09-2019 - |
سؤال
أريد إنشاء ملحق يعيد توجيه المستخدم إلى موقع ويب آخر إذا نقر على زر التمديد. حتى الآن، لم أر امتدادات فقط والتي تنشئ علامة تبويب جديدة لكل نقرة.
هل من الممكن إعادة توجيه المستخدم إلى موقع ويب آخر باستخدام علامة التبويب نشطة؟
حاولت شيئا مثل هذا:
chrome.browserAction.onClicked.addListener(function(tab) {
var url = "https://www.mipanga.com/Content/Submit?url="
+ encodeURIComponent(tab.url)
+ "&title=" + encodeURIComponent(tab.title);
document.location.href = url; // <-- this does not work
});
المحلول
انتباه: إذا قمت بتطوير ملحقات متصفح عبر (آمل أن تفعل!)، أوصي بأن تستخدم
chrome.tabs.query()
. وبعد يرجى الاطلاع إجابة جان مارك آمون للمزيد من المعلومات. هذه الإجابة لا تزال تعمل في كل من فايرفوكس والكروم، ولكنquery()
يستخدم أكثر شيوعا، لديه المزيد من الخيارات، ويعمل في صفحات الخلفية والتآراض المنبثقة.
من chrome.tabs
API، يمكنك استخدام getCurrent()
أو query()
.
أنا أفضل getCurrent
ولكن لا يمكن استدعاء من سياق غير TAB (مثل صفحة خلفية أو عرض منبثق). إذا كانت هذه مشكلة بالنسبة لك، يجب أن تتطلع إلى الاستخدام query
في حين أن. جان مارك آمون إجابه فيما يلي يوفر مثالا رائعا على كيفية الحصول على علامة التبويب النشطة في هذه الحالة (لا تنس التصوير في الرسوم!).
بمجرد أن يكون لديك علامة التبويب الحالية، ما عليك سوى تمرير update()
.
chrome.tabs.getCurrent(function (tab) {
//Your code below...
var tabUrl = encodeURIComponent(tab.url);
var tabTitle = encodeURIComponent(tab.title);
var myNewUrl = "https://www.mipanga.com/Content/Submit?url=" + tabUrl + "&title=" + tabTitle;
//Update the url here.
chrome.tabs.update(tab.id, {url: myNewUrl});
});
ملحوظة: من أجل استخدام هذه الوظيفة، أنت يجب تأكد من أن لديك tabs
تمكين الإذن في manifest.json
ملف:
"permissions": [
"tabs"
],
نصائح أخرى
يمكنك استخدام Chrome.tab.query أيضا
chrome.tabs.query({currentWindow: true, active: true}, function (tab) {
chrome.tabs.update(tab.id, {url: your_new_url});
});
ال chrome.tabs.update
الطريقة (على الأقل، اعتبارا من يناير 2017) سوف تعمل تلقائيا على علامة التبويب النشطة الحالية إذا لم يتم تمرير معرف علامة التبويب.
هذا لديه ميزة إضافية من عدم مطالبة tabs
إذن. تحذير الامتدادات مع هذا الإذن المستخدم الذي يمكنهم قراءة سجل التصفح، لذلك يجب عليك تجنب طلب ذلك إذا لم تكن بحاجة إلى ذلك.
تغيير عنوان URL لتغيير علامة التبويب الحالية بسيطة مثل كتابة هذا:
chrome.tabs.update(undefined, {url: 'http://example.com'});
أو كما ذكرها Farwayer في التعليقات، لا تحتاج إلى وضع حججتين على الإطلاق.
chrome.tabs.update({url: 'http://example.com'});