কীভাবে জাভাস্ক্রিপ্টে লক্ষ্য = "_ ফাঁকা" সিমুলেট করা যায়


156

যখন কোনও ব্যবহারকারী কোনও লিঙ্কে ক্লিক করে, তখন আমাকে একটি ডাটাবেসে একটি ক্ষেত্র আপডেট করতে হবে এবং তারপরে অনুরোধ করা লিঙ্কটি একটি নতুন উইন্ডোতে খুলতে হবে। আপডেটটি কোনও সমস্যা নয় তবে আমি জানিনা কীভাবে একটি নতুন উইন্ডো খুলতে হবে অন্য কোনও হাইপারলিংকে ক্লিক করার প্রয়োজন ছাড়াই।

<body onLoad="document.getElementById('redirect').click">
<a href="http://www.mydomain.com?ReportID=1" id="redirect" target="_blank">Report</a>
</body>

1
হুঁ? target="_top"একটি নতুন উইন্ডোতে খোলে না - target="_blank"করে।
তোমালাক

যদি লিঙ্কটি একটি নতুন উইন্ডোতে ইতিমধ্যে খোলা হচ্ছে (টার্গেট = "_ ফাঁকা" কারণে) এবং জাভাস্ক্রিপ্ট ক্লিক হ্যান্ডলার ইতিমধ্যে আপনার ডাটাবেস আপডেট করছে তবে জাভাস্ক্রিপ্টের সাহায্যে আপনার কেন নতুন উইন্ডোটি খোলার প্রয়োজন হবে?
জোয়েল মুলার 21

উত্তর:


298
<script>
    window.open('http://www.example.com?ReportID=1', '_blank');
</script>

দ্বিতীয় প্যারামিটারটি alচ্ছিক এবং লক্ষ্য উইন্ডোর নাম।


2
window.openযা করে তা target="_blank"করে - এটি একটি নতুন উইন্ডোতে URL খুলবে।
সেজেজোজ

3
হ্যাঁ. উইন্ডো.ওপেনের দ্বিতীয় আর্গুমেন্টটি হল "নাম" যা আপনি উইন্ডোটি দিতে চান, কোনও লিঙ্কে লক্ষ্য নির্ধারণের অনুরূপ। বিকাশকারী.মোজিলা.অর্গ
এএন / ডম: উইন্ডো.ওপেন

2
আচ্ছা বুঝলাম. উইন্ডো.পেন ফায়ারফক্স পপ-আপ ব্লকার দ্বারা অবরুদ্ধ, তবে লক্ষ্য = "_ ফাঁকা" নয়। আমি কি ক্লায়েন্টকে তাদের নিজস্ব ওয়েবসাইট থেকে পপআপগুলি সক্ষম করতে বলি?
ফিলিপ সেন 18

7
এমন কোনও জাভাস্ক্রিপ্ট সমাধান রয়েছে যা ফায়ারফক্সের মতো পপ-আপ ব্লকারদের দ্বারা অবরুদ্ধ হবে না?
ma11hew28

4
@ ম্যাটডিপিপাস্কোলে ব্লক করা উইন্ডো.পেন হ'ল পপ-আপ ব্লকারগুলির মূল বিষয়! আপনি যদি ক্লিক ক্লিকের জবাবে কল করেন তবে এটির অবরুদ্ধ না হওয়ার আরও ভাল সুযোগ রয়েছে।
উইলিয়াম ড্যানিস

19

এটি সাহায্য করতে পারে

var link = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
    link.href = 'http://www.google.com';
    link.target = '_blank';
    var event = new MouseEvent('click', {
        'view': window,
        'bubbles': false,
        'cancelable': true
    });
    link.dispatchEvent(event);

আইই 11: "রানটাইম জাভাস্ক্রিপ্ট ত্রুটি: অবজেক্টের জন্য বৈধ ক্রিয়া নয়"
টি-মোটি

8
এই উত্তরটি যা ঘটছে তার কিছু বিবরণ যোগ করে উন্নত করা যেতে পারে
এলি পোস্ট

13

আমি জানি এটি একটি সম্পন্ন এবং সাজানো সমাধান হয়েছে, তবে আমি আমার অ্যাপ্লিকেশনটিতে সমস্যাটি সমাধান করার জন্য যা ব্যবহার করছি তা এখানে।

if (!e.target.hasAttribute("target")) {
    e.preventDefault();     
    e.target.setAttribute("target", "_blank");
    e.target.click();
    return;
}

মূলত এখানে যা চলছে আমি কি লিঙ্কটির target=_blankবৈশিষ্ট্য আছে কিনা তা পরীক্ষা করে চালাচ্ছি । যদি এটি না হয় তবে এটি লিঙ্কটি ট্রিগার করা থেকে বিরত রাখে, এটি একটি নতুন উইন্ডোতে খোলার জন্য সেট আপ করে তারপরে প্রোগ্রাম্যাটিকভাবে এটিতে ক্লিক করে।

আপনি আরও একধাপ এগিয়ে যেতে পারেন এবং এ চেষ্টা করে আসল ক্লিকটি থামিয়ে (এবং আপনার কোডটিকে আরও অনেক বেশি সংক্ষিপ্ত করে তুলতে পারেন):

if (!e.target.hasAttribute("target")) {
    e.target.setAttribute("target", "_blank");
}

আপনি যদি কোনও অ্যাট্রিবিউট ক্রস ব্রাউজার যুক্ত করার প্রয়োগটি বিমূর্ত করতে jQuery ব্যবহার করে থাকেন তবে আপনার পরিবর্তে এটি ব্যবহার করা উচিত e.target.setAttribute("target", "_blank"):

    jQuery(event.target).attr("target", "_blank")

আপনার সঠিক ব্যবহারের ক্ষেত্রে এটি খাপ খাইয়ে নিতে আপনার প্রয়োজন হতে পারে তবে আমি কীভাবে নিজের চুলকানি চুলকিয়েছি তা এখানে।

আপনার সাথে জগাখিচুবি করার জন্য ক্রিয়াকলাপে এটির একটি ডেমো এখানে ।

(জিসফিলের লিঙ্কটি এই আলোচনায় ফিরে আসে .. নতুন ট্যাব লাগবে না :))


1
আমি এই উত্তরটি সর্বোপরি পছন্দ করি কারণ ভাল, এটি jquery ব্যবহার করে এবং এটি উইন্ডো.পেন পপআপ ব্লকার সমস্যাগুলি এড়িয়ে চলে। লক্ষ্যটি অনুপস্থিত থাকা লিঙ্কগুলি অন্তর্ভুক্ত থাকা কয়েকটি তৃতীয় পক্ষের ডেটা নিয়ে কাজ করার সময় এটি পুরোপুরি বৈধ।
IncredibleHat

7

আমি ব্যক্তিগতভাবে নীচের কোডটি ব্যবহার করতে পছন্দ করি যদি এটি কোনও লিঙ্কের জন্য হয়। অন্যথায় আপনি যদি অনুরূপ কোড সহ কোনও ফাংশন তৈরি করেন তবে এটি সম্ভবত সেরা।

onclick="this.target='_blank';"

আমি ডাব্লু 3 সি এর এক্সএইচটিএমএল কঠোর পরীক্ষাটি বাইপাস করার জন্য এটি ব্যবহার শুরু করেছি।


1
আমি মনে করি যে ইনলাইন জাভাস্ক্রিপ্ট সর্বত্র কাজ করে এমন একটি "অ-মানক" বৈশিষ্ট্য যুক্ত করার চেয়ে আরও অগোছালো।
ম্যাটি ভির্ককুনেন

@ মাট্টিভির্ককুনেন নির্দিষ্ট পরিস্থিতিতে এটিই একমাত্র সমাধান
ক্লাদিউ ক্র্যাঙ্গা

1
@ ক্লাডিউ: আপনি যদি নিজেকে এইরকম বেয়াদব পরিস্থিতিতে পান তবে আপনার চারপাশের কুঁচকির চেয়ে কারণটি ঠিক করা উচিত।
ম্যাটি ভির্ককুনেন

5

এইভাবে আমি jQuery দিয়ে এটি করি। আমার প্রতিটি লিঙ্কের জন্য একটি ক্লাস রয়েছে যা আমি নতুন উইন্ডোতে খুলতে চাই।

$(function(){

    $(".external").click(function(e) {
        e.preventDefault();
        window.open(this.href);
    });
});

2

আপনি ট্যাগ থেকে href নিষ্কাশন করতে পারেন:

window.open(document.getElementById('redirect').href);

1

এটি আপনাকে সমস্ত পৃষ্ঠার লিঙ্কগুলি খুলতে সহায়তা করতে পারে :

$(".myClass").each(
     function(i,e){
        window.open(e, '_blank');
     }
);

এটি প্রতিটি <a href="" class="myClass"></a>লিঙ্ক আইটেমকে অন্য ট্যাবে খুলবে যেমন আপনি প্রত্যেকে ক্লিক করেছেন।

আপনার কেবল এটি ব্রাউজার কনসোলে পেস্ট করতে হবে। jQuery কাঠামো প্রয়োজনীয়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.