הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [בעיה]פתיחת קישורים בחלון חדש (https://hosts.co.il/forums/showthread.php?t=54647)

Ben Segal 05-10-07 08:48

[בעיה]פתיחת קישורים בחלון חדש
 
שלום,
נתקלתי בבעייה ממש מוזרה ברגע זה אני כרגע ניסיתי לעבוד עם קידוד- DOCTYPE strict
ושאני עושה לינק לפתיחת חלון חדש כך:
HTML קוד:

<a href="http://www.wibesite.co.il" target="_blank">wibesite</a>
מילת ה- target_blank לא נחשבת תקנית ממש מוזר הצלחתי לתקן זאת על ידי- JS כך:
HTML קוד:

<a href="#" onclick="window.open('http://www.wibesite.co.il')">wibesite</a>
ולא נראה לי הגיוני שבשביל קישור חדש אצטרך לכתוב מחדש כל פעם מחדש- onclick :|
אז רציתי לשאול האם יש דרך אחרת?

תודה מראש.

daMn 05-10-07 11:05

מצאתי לך פונקציה שתעשה את העבודה:
http://loadaveragezero.com/app/s9y/i...get_blank.html
אם לא הבנת אני יסביר:
מה שבעצם הפונקציה הזאת עושה, היא עוברת על כל המסמך ובודקת איפה יש rel="external"
ומחליפה אותו ב "_blank" ככה שהמסמך יעבור את בדיקת xhtml.
במקום לכתוב target פשוט תכתוב
PHP קוד:

rel="external" 

הנה דוגמא למה שאני השתמשתי פעם, זאת פונקציה אחרת שעובדת אבל אני מאמין שגם מה שנתתי למעלה בסדר.
PHP קוד:

<body>
<
script language="javascript">
 function 
TargetBlankLinks() {
     if (!
document.getElementsByTagName) return;
     var 
document.getElementsByTagName("a");
     for (var 
i=0i<a.lengthi++) {
          if (
a[i].getAttribute("href") &&
          
a[i].getAttribute("rel") == "blankWin")
               
a[i].target "_blank";
     }
}  
</script>

<a href="http://www.fresh.co.il" rel="blankWin">sss</a>
<script>TargetBlankLinks()</script>
</body> 


Shon12 05-10-07 19:10

ולמה כל פעם בקישור חדש אני צריך לעשות:
HTML קוד:

<a href="http://web" rel="external">wibe</a>
ומתחת לזה אני צריך להוסיף גם:
HTML קוד:

<script>TargetBlankLinks()</script>
לפי מה שאני הבנתי ב- סקריפט מספיק שאני רושם "rel="external וזהו.

(דרך אגב איזה- DOCTYPE קשה.)

Daniel 05-10-07 19:26

ציטוט:

נכתב במקור על ידי daMn (פרסם 563200)
מצאתי לך פונקציה שתעשה את העבודה:
http://loadaveragezero.com/app/s9y/i...get_blank.html
אם לא הבנת אני יסביר:
מה שבעצם הפונקציה הזאת עושה, היא עוברת על כל המסמך ובודקת איפה יש rel="external"
ומחליפה אותו ב "_blank" ככה שהמסמך יעבור את בדיקת xhtml.
במקום לכתוב target פשוט תכתוב
PHP קוד:

rel="external" 

הנה דוגמא למה שאני השתמשתי פעם, זאת פונקציה אחרת שעובדת אבל אני מאמין שגם מה שנתתי למעלה בסדר.
PHP קוד:

<body>
<
script language="javascript">
 function 
TargetBlankLinks() {
     if (!
document.getElementsByTagName) return;
     var 
document.getElementsByTagName("a");
     for (var 
i=0i<a.lengthi++) {
          if (
a[i].getAttribute("href") &&
          
a[i].getAttribute("rel") == "blankWin")
               
a[i].target "_blank";
     }
}  
</script>

<a href="http://www.fresh.co.il" rel="blankWin">sss</a>
<script>TargetBlankLinks()</script>
</body> 


חוץ מזה שלא תוכל לכתוב rel=nofolow,
זה גם JS-זה תופס עוד משאבים, לא יעבוד בדפדפנים שלא תומכים ורוב הסיכויים גם בסלולארים,
זה עדיין לא תקני! זה כמו שתעשה ב-PHP,
error_reporting(0);
זה לא אומר שאין בעיות בדף!

Shon12 05-10-07 19:53

לפי השיחה פה אני מבין שהדרך היחידה פה היא:
HTML קוד:

onclick="window.open('')"
האם זאת הדרך היחידה?

Daniel 05-10-07 20:13

הדרך התקנית באמת היחידה? כן.

אבל עם קצת ליטושים, אפשר משהו נחמד, אני עוד כמה דקות אערוך ואציג.
PHP קוד:

<body>
<
script language="javascript">
 function 
TargetBlankLinks() {
     if (!
document.getElementsByTagName) return;
     var 
document.getElementsByTagName("a");
     for (var 
i=0i<a.lengthi++) {
          if (
a[i].getAttribute("href") &&
          
a[i].getAttribute("class") == "blankWin")
               
a[i].onclick "window.open('" a[i].href +"');";
     }
}  
</script>

<a href="http://www.hosts.co.il" class="blankWin">sss</a>
<script>TargetBlankLinks()</script>
</body> 

זה אמור לעבוד, אך כדאי לבדוק תאימות בין דפדפנים שונים

daMn 05-10-07 20:13

ציטוט:

נכתב במקור על ידי MasterT (פרסם 563487)
חוץ מזה שלא תוכל לכתוב rel=nofolow,
זה גם JS-זה תופס עוד משאבים, לא יעבוד בדפדפנים שלא תומכים ורוב הסיכויים גם בסלולארים,
זה עדיין לא תקני! זה כמו שתעשה ב-PHP,
error_reporting(0);
זה לא אומר שאין בעיות בדף!

אתה מוזמן לבדוק אם זה תיקני או לא.

Daniel 05-10-07 20:17

יופי, כי הבודק לא מספיק חכם.
אתה יכול לעשות גם,
document.write(unsescape(CODE));

במקום ה-CODE, לכתוב את ה-escape של <br>.
והוא יגיד לך שזה תקני.

זה עדיין לא תקני! זה כמו שתעשה ב-PHP,
error_reporting(0);
זה לא אומר שאין בעיות בדף!
בעצם זה עוד יותר גרוע, כי זה פשוט לא תקני.


כל הזמנים הם GMT +2. הזמן כעת הוא 18:11.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ