วิธีเปิดเอกสารในหน้าต่างแยกต่างหากจากแผนผังเว็บไซต์

ฉันหวังที่จะเปิดเอกสารในตัวควบคุมเมนูโดยใช้แผนผังเว็บไซต์ ฉันใช้โค้ดต่อไปนี้ในแผนผังเว็บไซต์แต่ได้รับข้อผิดพลาด ฉันต้องการที่จะคลิกที่รายการเมนู ให้เปิดเอกสารตัวอย่างในหน้าต่างใหม่ แต่ไม่ให้หน้าเดิมนำทางไปยังตำแหน่งใหม่ (โดยพื้นฐานแล้วไม่ต้องทำอะไรเลยในหน้าหลัก)

<siteMapNode url="javascript:window.open('Sample.doc','SampleName'); return false" title="FAQs"  description="FAQs" />

มีความคิดอะไรบ้าง? มีจาวาสคริปต์บางตัวที่ฉันสามารถใช้ได้โดยไม่จำเป็นต้องลงทะเบียนฟังก์ชันในทุกหน้าหรือไม่


person Sean    schedule 06.05.2010    source แหล่งที่มา


คำตอบ (6)


ฉันลงเอยด้วยการใช้สิ่งต่อไปนี้:

<siteMapNode url="javascript:window.open('Sample.doc','SampleName'); void(0);" title="FAQs"  description="FAQs" />
person Sean    schedule 06.05.2010

ถ้าคุณจัดการเหตุการณ์ OnMenuItemDataBound บนตัวควบคุมเมนู ASP.NET คุณสามารถตั้งค่าแอตทริบิวต์เป้าหมายบนรายการที่นั่นได้:

MyMenu.MenuItemDataBound += OnMenuItemDataBound

private void OnMenuItemDataBound(object sender, MenuEventArgs e)
{
    // Sets all menu items to open in new windows
    e.Item.Target = "_blank";

    // Uses a 'target' attribute in the XML sitemap if set:
    string targetAttributeValue = ((SiteMapNode)e.Item.DataItem)["target"];
    if (targetAttributeValue != null) {
        e.Item.Target = targetAttributeValue;
    }
}
person Tevin    schedule 07.04.2014

javascript:widow.open

คุณแน่ใจหรือว่าไม่ได้หมายถึง window.open?
ฉันไม่คิดว่าสคริปต์ของคุณเกี่ยวข้องกับแม่ม่ายมากนัก ;)

person Sune Rasmussen    schedule 06.05.2010
comment
ฮ่า! ฉันหมายถึง window.open ฉันได้อัปเดตคำถามของฉันแล้ว (นั่นไม่ใช่ปัญหาของฉัน) ฉันได้ลองหลายสิ่งหลายอย่างจนเลอะเทอะ... ขอบคุณ - person Sean; 06.05.2010

คุณจะต้องค้นหาว่าการควบคุมใดที่ใช้งานไฟล์แผนผังเว็บไซต์ จากนั้นจึงจับเหตุการณ์ที่สร้างจากการควบคุมนั้น

person azamsharp    schedule 06.05.2010

ทำไมไม่ใช้แอตทริบิวต์เป้าหมายล่ะ?

<siteMapNode url="Sample.doc" target="_blank" title="FAQs"  description="FAQs" />
person Stephen    schedule 17.08.2012
comment
แอตทริบิวต์เป้าหมายไม่ได้รับการนำไปใช้กับแท็กลิงก์ที่สร้างโดยการควบคุมเมนู - person Tevin; 07.04.2014
comment
โหวตสิ่งนี้เพราะฉันสงสัยในสิ่งเดียวกัน ดังนั้นคำถามนี้จึงมีประโยชน์แม้ว่าจะเพียงเพื่อลดราคาวิธีแก้ปัญหาเท่านั้น - person John Deverall; 10.11.2014

target="_blank" บนเพจต้นฉบับหายไปเมื่อเพจแสดงผลให้ฉัน ฉันต้องทำมันในโค้ดด้านหลังดังนี้:

private void Menu1_PreRender(object sender, EventArgs e)
{
    if (!IsPostBack) {
        MenuItem FAQsItem = new MenuItem("FAQs");
        FAQsItem.NavigateUrl = "~/Sample.doc"; //You'll need to figure out your correct URL
        FAQsItem.Target = "_blank";
        Menu1.Items.Add(FAQsItem);
    }
}

หมายเหตุ: ฉันเพิ่มสิ่งนี้ลงใน PreRender ของเมนูเนื่องจากฉันต้องการเพิ่มไปที่ส่วนท้ายของ MenuItems อื่นๆ ที่อยู่ในหน้าต้นฉบับและไม่จำเป็นต้องใช้ target="_blank"

person Tony L.    schedule 04.03.2016