Greasy Fork is available in English.

The Wall Street Journal - Articoli con testo completo

Mostra il testo completo degli articoli su The Wall Street Journal

// ==UserScript==
// @name:zh-CN     华尔街日报付费墙移除、全文显示
// @description:zh-CN     用户在访问华尔街日报网站时移除付费墙,让您免费阅读文章。已确认在 iOS Safari 上阅读 文章时会遇到文字体过大的问题。作为暂时解决方案,请使用 Safari 浏览器网址栏的字体调整工具调大或调小字体,然后再调回原本大小,字体大小将恢复正常。 则没有这个问题。感谢您的配合与理解。
// @name:zh-TW     華爾街日報付費牆移除、全文顯示
// @description:zh-TW     用戶在訪問華爾街日報網站時移除付費牆,讓您免費閱讀文章。已確認在 iOS Safari 上讀取 文章時會遇到文字體過大的問題。作為暫時解決方案,請使用 Safari 瀏覽器網址列的字體調整工具調大或調小字體,然後再調回原本大小,字體大小將恢復正常。 則沒有這個問題。感謝您的配合與理解。
// @name            The Wall Street Journal Full Text Articles
// @name:it         The Wall Street Journal - Articoli con testo completo
// @namespace       iamfredchu
// @version         0.0.10
// @description     Fetch the full text of The Wall Street Journal articles from the AMP version. I've identified an issue affecting iOS Safari users while reading articles on The font size may appear too large. As a temporary workaround, please use the font adjustment tool in the Safari address bar to increase or decrease the font size, then reset it to the original size. This should fix the issue. This bug is not present on Thank you for your cooperation and understanding.
// @description:it  Mostra il testo completo degli articoli su The Wall Street Journal
// @author          Fred Chu
// @match *
// @match *
// @require
// @inject-into     content
// @grant           GM_xmlhttpRequest
// @grant           GM.xmlHttpRequest
// @run-at       document-end
// @license         GPL version 3 or any later version;
// ==/UserScript==

function fetch(params) {
    return new Promise(function(resolve, reject) {
        params.onload = resolve;
        params.onerror = reject;

(function() {
    'use strict';
    const $body = $(document.body);
    const paywalled = $body.find("#cx-snippet-promotion");

    if (!paywalled) {

        method: 'GET',
        url: location.protocol + '//' + + '/amp' + location.pathname,
    }).then(function(responseDetails) {
        var r = responseDetails.responseText;
        r = r.replace(/<script/gi, '<div').replace(/script>/gi, 'div>');
        r = r.replace(/\?width=/gi, '?__=').replace(/<amp-img/gi, '<img').replace(/<.amp-img>/, '').replace(/amp-iframe/gi, 'iframe');

        var data = $(r);

            let hasSnippet = $body.find('.wsj-snippet-body');
            let $preview = $body.find('article section').length ?
                $body.find('article section') :

                                 .css('margin-bottom', '5rem')
                                 .css('color', 'var(--primary-text-color)')
                                 .css('font-family', 'var(--article-font-family)')
                                 .css('font-weight', 'var(--article-font-weight)')
                                 .css('line-height', 'calc(27 / 17)')
                                 .css('direction', 'var(--article-direction);')

            $body.find('#cx-snippet-overlay').length && $body.find('#cx-snippet-overlay').parent().remove();
            $body.find('.snippet-promotion, #cx-what-to-read-next').length && $body.find('.snippet-promotion, #cx-what-to-read-next').remove();

            $body.find('.responsive-media').css('height', 'auto');
            $body.find('.responsive-media img').css({
                'height': 'auto',
                'width': 'auto',
                'max-width': '100%',
                'display': 'block',
                'position': 'relative',

            $body.find('article section p').css('margin', '0 0 1em 0')
                .css('font-size', 'calc((17 / var(--article-base-font-size)) * var(--article-text-size-scale) * 1rem)');

            const $videoWrapper = $('<div class="video-player"></div>');
            $videoWrapper.css('height', '225px');
            $body.find('.media-object-video iframe').css('max-width', '100%').removeClass('video-wrapper').wrap($videoWrapper);

            $body.find('.media-object-podcast iframe').css('max-width', '100%');
            $body.find('.imageCaption').each(function() {
                var element = $(this);
                var parent = element.parent();
                var wrapper = $('<div class="wsj-article-caption"></div>');
            }).find('.imageCredit').addClass('wsj-article-credit').prepend(' ');
            $body.find('.media-object img').css('height', 'auto');
        }, 3000);
    }).catch(error => {