您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
symfony debug bar enhancement
- // ==UserScript==
- // @name symfony profiler toolbar enhancement
- // @namespace micoli.symfony.profiler
- // @version 0.2
- // @description symfony debug bar enhancement
- // @match http*://*/*
- // @author micoli
- // @match https://stackoverflow.com/questions/52040308/css-selector-anchor-text-of-href-contains
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- const openPhpStormLink = function (link) {
- const linkWindow = window.open(link,'ee');
- setTimeout(function(){
- linkWindow.close();
- },2);
- };
- if(document.querySelector('.exception-summary')){
- document.querySelectorAll('.trace-file-path>a').forEach(function (link) {
- const matches = link.href.match(/\_profiler\/open\?file=(.*)/);
- const sublink=matches[1];;
- link.href = `http://localhost:63342/api/file?file=${sublink}`;
- link.addEventListener('click',function (event) {
- openPhpStormLink(event.currentTarget.href);
- event.preventDefault();
- });
- });
- }
- if (document.location.href.match(/_profiler/)) {
- document.getElementById('header').style.display='none';
- return;
- }
- if(!document.querySelector('.sf-toolbar')){
- return;
- }
- let windowSrc = `
- <style>
- #sfProfilerWindow-title {
- font-size: 20px;
- left: 26px;
- top: 9px;
- position: fixed;
- font-weight: bold;
- color: white;
- }
- #sfProfilerWindow-title-container {
- top: 5px;
- height: 25px;
- left: 10px;
- right: 10px;
- border: 1px solid #A3A3A3;
- position: fixed;
- overflow: hidden;
- z-index: 99;
- background-color: #4F805D;
- display: none;
- }
- #sfProfilerWindow {
- top: 30px;
- bottom: 45px;
- left: 10px;
- right: 10px;
- border: 0px solid #A3A3A3;
- position: fixed;
- overflow: hidden;
- z-index: 99;
- display: none;
- }
- #sfProfilerWindow-close{
- width: 20px;
- cursor: pointer;
- float: right;
- font-size: 20px;
- margin-right: 7px;
- font-weight: bold;
- color: white;
- }
- #sfProfilerWindow-iframe {
- width: 100%;
- height: 100vh;
- border-width: thin;
- }
- </style>
- <div id="sfProfilerWindow-title-container">
- <span id="sfProfilerWindow-title">title</span>
- <span id="sfProfilerWindow-close">[X]</span>
- </div>
- <div id="sfProfilerWindow">
- <iframe
- id="sfProfilerWindow-iframe"
- src="http://dinghy:22080/_profiler/052e26?panel=request"
- scrolling="yes"
- ></iframe>
- </div>
- </div>
- `;
- const isWindowOpened = function () {
- return document.getElementById('sfProfilerWindow').style.display === 'block';
- };
- const showWindow = function () {
- document.getElementById('sfProfilerWindow-title-container').style.display = 'block';
- document.getElementById('sfProfilerWindow').style.display = 'block';
- };
- const hideWindow = function () {
- document.getElementById('sfProfilerWindow-title-container').style.display = 'none';
- document.getElementById('sfProfilerWindow').style.display = 'none';
- };
- const capitalize = function (s) {
- if (typeof s !== 'string') return ''
- return s.charAt(0).toUpperCase() + s.slice(1)
- };
- const openSymfonyWindow = function (event, button) {
- event.preventDefault();
- let link = button.querySelector('a');
- if (isWindowOpened() && link.href === document.getElementById('sfProfilerWindow-iframe').src) {
- hideWindow();
- return false;
- }
- showWindow();
- document.getElementById('sfProfilerWindow-iframe').src = link.href;
- const linkMatches = link.href.match(/panel=(.*)/);
- document.getElementById('sfProfilerWindow-title').innerHTML = capitalize(linkMatches[1]);
- return false;
- };
- const setLinks = function () {
- //a[href*="/_profiler/"]:not(.rgx-add-profiler)
- document.querySelectorAll(
- '.sf-toolbarreset>.sf-toolbar-block:not(.rgx-add-profiler'
- ).forEach(function (button) {
- button.className = button.className + ' rgx-add-profiler';
- button.target = '_blank';
- button.onclick = function (event) {
- openSymfonyWindow(event, button);
- }
- });
- };
- setLinks();
- setInterval(setLinks, 500);
- document.body.insertAdjacentHTML('beforeEnd', windowSrc);
- document.getElementById('sfProfilerWindow-close').onclick = hideWindow;
- hideWindow();
- })();