2010-05-06 27 views
5

Tôi đã hy vọng mở tài liệu trong điều khiển menu bằng cách sử dụng sơ đồ trang web. Tôi đang sử dụng mã sau trong sơ đồ trang web nhưng gặp lỗi. Tôi muốn có thể nhấp vào mục trình đơn, để mở tài liệu mẫu trong cửa sổ mới, nhưng không để trang gốc điều hướng đến địa điểm mới (về cơ bản không làm gì trên trang chính.)Cách mở tài liệu trong một cửa sổ riêng biệt từ bản đồ trang web

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

Bất kỳ ý tưởng nào? Có một số javascript tôi có thể sử dụng mà không yêu cầu tôi đăng ký một chức năng trên mỗi trang?

Trả lời

8

tôi đã kết thúc bằng cách sử dụng sau đây:

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

Bạn có chắc chắn bạn không có nghĩa là window.open?
Tôi không nghĩ rằng tập lệnh của bạn có liên quan nhiều đến góa phụ;)

+0

Hah! Tôi đã có nghĩa là window.open. Tôi đã cập nhật câu hỏi của mình (đó không phải là vấn đề của tôi). Tôi đã cố gắng rất nhiều thứ mà tôi thấy cẩu thả ... cảm ơn. – Sean

1

Bạn sẽ cần tìm ra điều khiển nào đang tiêu thụ tệp sơ đồ trang web và sau đó nắm bắt sự kiện được tạo từ điều khiển đó.

0

Tại sao không chỉ cần sử dụng thuộc tính mục tiêu?

<siteMapNode url="Sample.doc" target="_blank" title="FAQs" description="FAQs" /> 
+0

Thuộc tính đích không được áp dụng cho thẻ liên kết được tạo bởi điều khiển menu – Tevin

+0

Lên tiếng bình chọn vì tôi đã tự hỏi điều tương tự. Vì vậy, câu hỏi là hữu ích ngay cả khi chỉ để chiết khấu một giải pháp. –

3

Nếu bạn xử lý các sự kiện OnMenuItemDataBound trên điều khiển menu ASP.NET, bạn có thể thiết lập các thuộc tính mục tiêu vào mục đó:

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; 
    } 
} 
0

target="_blank" trên trang nguồn bị mất khi trang rendered cho tôi. Tôi phải làm điều đó trong mã đằng sau như vậy:

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); 
    } 
} 

Lưu ý: tôi đã thêm này để PreRender của đơn vì tôi chỉ muốn thêm nó vào phần cuối của MenuItems khác mà là trong trang nguồn và đã làm không cần target="_blank".

Các vấn đề liên quan