Makes clicking on a post link in a quote immediately scroll to the post if it's on the same page, rather than reloading the page. Also updates the URL so the post can be easily linked to.
当前为
// ==UserScript==
// @name Facepunch quick post scroll
// @version 2.0
// @description Makes clicking on a post link in a quote immediately scroll to the post if it's on the same page, rather than reloading the page. Also updates the URL so the post can be easily linked to.
// @match https://forum.facepunch.com/f/*
// @namespace https://greasyfork.org/users/28313
// ==/UserScript==
( function() {
'use strict';
var posts;
var scrollToPost = function( e ) {
if ( !e.target || !e.target.matches( 'postquote > div > .head > a' ) ) {
return;
}
posts = posts || document.getElementsByClassName( 'postrender' );
var postFragment = e.target.href.match( /\/f\/p\/(\d+)\/$/ );
if ( !postFragment ) {
return;
}
var postId = postFragment[1];
var post;
for ( var postRender of posts ) {
if ( postId === postRender.__vue__.$options.propsData.postid ) {
post = postRender.closest( '.postblock' );
break;
}
}
if ( !post ) {
return;
}
history.pushState( {}, '', '#' + post.id );
post.scrollIntoView( { behavior: 'smooth' } );
e.preventDefault();
};
var threadSections = document.querySelectorAll( '.threadviewsection, .threadreplysection' );
if ( !threadSections.length ) {
return;
}
for ( var section of threadSections ) {
section.addEventListener( 'click', scrollToPost, false );
}
}() );