רישום מטפל לפרוטוקול

‏ • 14 במרץ, 2014

אחד הפיצ’רים המעניינים ב-HTML5 הוא הרישום מטפל לפרוטוקול. מה זה אומר? בהרבה דפי אינטרנט ניתן למצוא קישורים שהכתובת בהם היא בפרוטוקול שהוא לא http. לדוגמא, הלינק הבא:

<a href=”mailto:a@a.com“>Mail</a>

הלינק הזה יפתח את תוכנת המייל שלכם ומשם תוכלו לשלוח מייל לכתובת a@a.com. אבל אם נרצה שהדפדפן ינווט לאתר מייל (כמו Gmail, Hotmail וכו’), ולא יפתח לנו את תוכנת המייל שמותקנת במחשב שלנו, כמו Outlook?

רישום מטפל לפרוטוקול מאפשר זאת: כל אתר שינסה לנווט ל: protocolName:text (לדוגמא – לינק שמוביל אל: mailto:a@a.com), יגיע אל האתר שלכם.

Gmail כבר משתמשים בזה – הם נרשמים כמטפלים לפרוטוקול mailto, כך שכל לינק עם הפרוטוקול הזה (כמו mailto:a@a.com) יוביל ל-Gmail (זאת כמובן אם אישרתם את זה).

הדבר המעניין ברישום מטפל לפרוטוקול הוא שניתן לרשום גם פרוטוקולים חדשים, שאנחנו ממציאים, בתנאי שהם מתחילים ב-web+. לדוגמא: web+myprotocol.

הרישום מתבצע בעזרת הפונקציה registerProtocolHandler באובייקט navigator. התחביר הוא:

navigator.registerProtocolHandler(protocol, uri, title);

אם נרצה שהאפליקציה שלנו בכתובת example.com תטפל בפרוטוקול web+myprotocol, קוד ה-JS הוא:

navigator.registerProtocolHandler(‘web+myprotocol’, ‘http://example.com/?q=%s’, ‘My App’);

%s זה המידע שמועבר, כך שבלחיצה על הלינק:

<a href=”web+myprotocol:somedata”>link</a>

הדפדפן ינווט אל הכתובת http://example.com/?q=web%2Bmystuff%3Asomedata.

המידע שמועבר ב-%s כולל את שם הפרוטוקול ודורש פענוח, מפני שהוא מקודד.

כשאתר מנסה לרשום מטפל פרוטוקול, הכתובת צריכה להיות בדומיין שבו הוא נמצא (אתר a.com לא יוכל לקבוע ש-b.com יטפל בפרוטוקולים), והמשתמש צריך לאשר את השינוי – לדוגמא, בגוגל כרום מופיע סמל בשורת הכתובת.

כל פרוטוקול חדש צריך תוספת של web+ בהתחלה (לכן web+myprotocol ולא רק myprotocol), אך פרוטוקולים אחרים מופיעים בצורה הרגילה שלהם (mailto,mms,nntp,rtsp,webcal).

תגיות: ,

תגובות בפייסבוק