নতুন ট্যাব বা নতুন উইন্ডোতে জেদী জাভাস্ক্রিপ্ট লিঙ্কগুলি কীভাবে খুলবেন?


17

কিছু ওয়েবসাইটগুলি "ক্রিয়েটিভ" (জাভাস্ক্রিপ্ট?) হাইপারলিংকগুলি ব্যবহার করে যা ব্রাউজারের কার্যকারিতা ভঙ্গ করে, যেমন একটি নতুন ট্যাবে খুলতে Ctrl + ক্লিক করার ক্ষমতা বা মিডল ক্লিক লিঙ্কগুলি।

একটি সাধারণ উদাহরণ, টেলো এইচআর ওয়েবসাইটগুলি http://www.rogers.com/web/Careers.portal?_nfpb=true&_pageLabel=C_CP&_page=9

আমি যা চেষ্টা করি তা বিচার্য নয়, আমি কেবলমাত্র লিঙ্কগুলিতে সাধারণত তাদের ক্লিক করে অনুসরণ করতে পারি; আমি এগুলিকে একটি নতুন উইন্ডোতে খুলতে পারি না। এই কাছাকাছি কোন উপায় আছে?


হ্যাঁ, href # তে সেট করা আছে এবং লিঙ্কের অনক্লিক ইভেন্টে জেএসকে অনুরোধ করা হয়েছে (সাইটটি জেএস অক্ষম হয়ে কাজ করে না)। সম্ভবত এটির সাথে মোকাবেলা করতে পারে এমন কোনও ব্রাউজার প্লাগইন রয়েছে।
করণ


হ্যাঁ আমি সর্বদা ভাবতাম এটি অত্যন্ত নিরীহ
গিগালা

উত্তর:


3

আপনার প্রশ্নটি টেলোর সাথে সুনির্দিষ্ট, তাই আমার উত্তরটিও হবে :)

আমি একটি ব্যবহারকারীর স্ক্রিপ্ট কোড করেছি যা আপনি যা চান তা করে: এটি সমস্ত জাভাস্ক্রিপ্ট লিঙ্কগুলিকে সাধারণ লিঙ্কগুলির সাথে প্রতিস্থাপন করে, তাই আপনি চাইলে কেবল ক্লিক করতে পারেন বা একটি নতুন ট্যাবে খুলতে চান যদি আপনি চান।

// ==UserScript==
// @name        Taleo Fix
// @namespace   https://github.com/raphaelh/taleo_fix
// @description Taleo Fix Links
// @include     http://*.taleo.net/*
// @include     https://*.taleo.net/*
// @version     1
// @grant       none
// ==/UserScript==

function replaceLinks() {
    var rows = document.getElementsByClassName("titlelink");
    var url = window.location.href.substring(0, window.location.href.lastIndexOf("/") + 1) + "jobdetail.ftl";

    for (var i = 0; i < rows.length; i++) {
        rows[i].childNodes[0].href = url + "?job=" + rows[i].parentNode.parentNode.parentNode.parentNode.parentNode.id;
    }
}

if (typeof unsafeWindow.ftlPager_processResponse === 'function') {
    var _ftlPager_processResponse = unsafeWindow.ftlPager_processResponse;
    unsafeWindow.ftlPager_processResponse = function(f, b) {
        _ftlPager_processResponse(f, b);
        replaceLinks();
    };
}

if (typeof unsafeWindow.requisition_restoreDatesValues === 'function') {
    var _requisition_restoreDatesValues = unsafeWindow.requisition_restoreDatesValues;
    unsafeWindow.requisition_restoreDatesValues = function(d, b) {
        _requisition_restoreDatesValues(d, b);
        replaceLinks();
    };
}

আপনি এটি এখানে খুঁজে পেতে পারেন: https://github.com/raphaelh/taleo_fix/blob/master/Taleo_Fix.user.js


2

হ্যাঁ. আপনি গ্রিসমোনকি (ফায়ারফক্স) বা ট্যাম্পারমনকি (ক্রোম) এর জন্য আপনার নিজের স্ক্রিপ্ট লিখতে পারেন

উদাহরণস্বরূপ, আপনি উল্লেখ করেছেন, এই টেম্পারমোনকি ইউজারস্ক্রিপ্ট নতুন ট্যাব / উইন্ডোতে খুলতে অনুসন্ধানের ফলাফলগুলিতে সমস্ত জাভাস্ক্রিপ্ট লিঙ্ক সেট করবে (এটি ব্রাউজার কনফিগারেশনের উপর নির্ভর করে, এটি আমার জন্য ট্যাবগুলি)।

// ==UserScript==
// @name       open links in tabs
// @match      http://rogers.taleo.net/careersection/technology/jobsearch.ftl*
// ==/UserScript==

document.getElementById('ftlform').target="_blank"

যদিও আপনি এর আরও জেনেরিক সংস্করণ লিখতে পারেন, অন্য জায়েজস্ক্রিপ্ট লিঙ্কগুলির জন্য অন্যান্য ব্যবহারযোগ্যতা ভঙ্গ না করে এই কার্যকারিতাটি সক্ষম করা শক্ত হবে।

একটি মিডলপথের জন্য ইভেন্ট হ্যান্ডলার সেট করা যেতে পারে Ctrl, যা কী ধরে রাখার পরে অস্থায়ীভাবে সমস্ত ফর্মগুলির জন্য "_blank" এ লক্ষ্য নির্ধারণ করবে।


1

এখানে আরও একটি ব্যবহারকারীর স্ক্রিপ্ট রয়েছে, যা কোনও উপাদানকে কোনও উপাদানের একটি onclick="document.location='some_url'"বৈশিষ্ট্যের সাথে <a href=some_url>আবৃত করে এবং মুছে ফেলে onclick

আমি এটি একটি নির্দিষ্ট সাইটের জন্য লিখেছি, তবে এটি যথেষ্ট জেনেরিক যে এটি অন্যের পক্ষে কার্যকর হতে পারে। নীচে @ ম্যাচ ইউআরএল পরিবর্তন করতে ভুলবেন না ।

লিঙ্কগুলি যখন এজেএক্স কল দ্বারা লোড হয় তখন এটি কাজ করে, তাই মিউটেশনঅবার্সার।

// ==UserScript==
// @name         JavaScript link fixer
// @version      0.1
// @description  Change JavaScript links to open in new tab/window
// @author       EM0
// @match        http://WHATEVER-WEBSITE-YOU-WANT/*
// @grant        none
// ==/UserScript==

var modifyLink = function(linkNode) {
    // Re-create the regex every time, otherwise its lastIndex needs to be reset
    var linkRegex = /document\.location\s*=\s*\'([^']+)\'/g;

    var onclickText = linkNode.getAttribute('onclick');
    if (!onclickText)
        return;

    var match = linkRegex.exec(onclickText);
    if (!match) {
        console.log('Failed to find URL in onclick text ' + onclickText);
        return;
    }

    var targetUrl = match[1];
    console.log('Modifying link with target URL ' + targetUrl);

    // Clear onclick, so it doesn't match the selector, before modifying the DOM
    linkNode.removeAttribute('onclick');

    // Wrap the original element in a new <a href='target_url' /> element
    var newLink = document.createElement('a');
    newLink.href = targetUrl;
    var parent = linkNode.parentNode;
    newLink.appendChild(linkNode);
    parent.appendChild(newLink);
};

var modifyLinks = function() {
    var onclickNodes = document.querySelectorAll('*[onclick]');
    [].forEach.call(onclickNodes, modifyLink);
};

var observeDOM = (function(){
    var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

    return function(obj, callback) {
        if (MutationObserver) {
            var obs = new MutationObserver(function(mutations, observer) {
                if (mutations[0].addedNodes.length || mutations[0].removedNodes.length)
                    callback();
            });

            obs.observe(obj, { childList:true, subtree:true });
        }
    };
})();


(function() {
    'use strict';
    observeDOM(document.body, modifyLinks);
})();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.