您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Embed Jetpunk into whatever site (change the @match)
- // ==UserScript==
- // @name Embed Jetpunk
- // @namespace https://your-website.com
- // @version 1.0
- // @description Embed Jetpunk into whatever site (change the @match)
- // @author Your Name
- // @match (what I want to embed in)
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // Create a container div to hold the iframe
- var iframeContainer = document.createElement('div');
- iframeContainer.style.position = 'absolute'; // Positioning it on top of other content
- iframeContainer.style.top = '70px'; // Adjusted this value to push it lower
- iframeContainer.style.left = '0';
- iframeContainer.style.width = '100%';
- iframeContainer.style.height = '600px'; // Default height
- iframeContainer.style.zIndex = '9999'; // Ensure it stays on top of other content
- iframeContainer.style.border = '5px solid #a75cf5'; // Vibrant purple border
- iframeContainer.style.marginBottom = '50px'; // Prevent content from being hidden underneath the resizer
- iframeContainer.style.overflow = 'auto'; // Allow scrolling in the container if necessary
- // Create a draggable header bar with a gradient background (lighter blue to green)
- var headerBar = document.createElement('div');
- headerBar.style.background = 'linear-gradient(45deg, #513df9, #00ff00)'; // Lighter blue to green gradient
- headerBar.style.color = 'white';
- headerBar.style.padding = '5px';
- headerBar.style.cursor = 'move';
- headerBar.style.textAlign = 'center';
- headerBar.innerHTML = 'Drag to Move Textbook';
- // Adjust headerBar to ensure it's not pushed out of view
- headerBar.style.marginBottom = '0px'; // Increased margin to push down slightly
- // Add the header bar to the container
- iframeContainer.appendChild(headerBar);
- // Create an iframe element to embed the OpenStax website
- var iframe = document.createElement('iframe');
- iframe.src = 'https://www.jetpunk.com/';
- iframe.style.width = '100%';
- iframe.style.height = '100%'; // Take up full container height
- iframe.style.border = 'none';
- // Append the iframe to the container
- iframeContainer.appendChild(iframe);
- // Function to create resizers
- function createResizer(position) {
- var resizer = document.createElement('div');
- resizer.style.width = '20px';
- resizer.style.height = '20px';
- resizer.style.position = 'absolute';
- resizer.style.cursor = `${position}-resize`;
- // Set the resizer color to black
- resizer.style.backgroundColor = 'black';
- switch(position) {
- case 'top-left':
- resizer.style.top = '-5px'; // Push resizer up slightly
- resizer.style.left = '-5px'; // Ensure resizer is visible in the corner
- break;
- case 'top-right':
- resizer.style.top = '-5px'; // Push resizer up slightly
- resizer.style.right = '-5px'; // Ensure resizer is visible in the corner
- break;
- }
- return resizer;
- }
- // Add resizers to top-left and top-right only
- var topLeftResizer = createResizer('top-left');
- var topRightResizer = createResizer('top-right');
- iframeContainer.appendChild(topLeftResizer);
- iframeContainer.appendChild(topRightResizer);
- // Append the container to the body of the page
- document.body.appendChild(iframeContainer);
- // Function to make the container draggable
- headerBar.addEventListener('mousedown', function(e) {
- e.preventDefault();
- // Start dragging the container
- var initialTop = iframeContainer.offsetTop;
- var initialLeft = iframeContainer.offsetLeft;
- var initialX = e.clientX;
- var initialY = e.clientY;
- // Mousemove event to move the container
- function onMouseMove(event) {
- var deltaX = event.clientX - initialX;
- var deltaY = event.clientY - initialY;
- iframeContainer.style.top = initialTop + deltaY + 'px'; // Only allow vertical movement
- iframeContainer.style.left = initialLeft + deltaX + 'px'; // Allow horizontal movement as well
- }
- // Mouseup event to stop dragging the container
- function onMouseUp() {
- document.removeEventListener('mousemove', onMouseMove);
- document.removeEventListener('mouseup', onMouseUp);
- }
- document.addEventListener('mousemove', onMouseMove);
- document.addEventListener('mouseup', onMouseUp);
- });
- // Function to resize the iframe container from the corners
- function resizeContainer(resizer, corner) {
- let isResizing = false;
- resizer.addEventListener('mousedown', function(e) {
- e.preventDefault();
- isResizing = true;
- // Initial dimensions and mouse position
- var initialWidth = iframeContainer.offsetWidth;
- var initialHeight = iframeContainer.offsetHeight;
- var initialX = e.clientX;
- var initialY = e.clientY;
- var initialTop = iframeContainer.offsetTop;
- var initialLeft = iframeContainer.offsetLeft;
- // Mousemove event to resize both horizontally and vertically
- function onMouseMove(event) {
- if (isResizing) {
- var deltaX = event.clientX - initialX;
- var deltaY = event.clientY - initialY;
- // Handle resizing based on corner
- if (corner === 'top-left') {
- iframeContainer.style.width = initialWidth - deltaX + 'px';
- iframeContainer.style.height = initialHeight - deltaY + 'px';
- iframe.style.width = iframeContainer.style.width;
- iframe.style.height = iframeContainer.style.height;
- iframeContainer.style.top = initialTop + deltaY + 'px'; // Update top position when resizing
- iframeContainer.style.left = initialLeft + deltaX + 'px'; // Update left position when resizing
- } else if (corner === 'top-right') {
- iframeContainer.style.width = initialWidth + deltaX + 'px';
- iframeContainer.style.height = initialHeight - deltaY + 'px';
- iframe.style.width = iframeContainer.style.width;
- iframe.style.height = iframeContainer.style.height;
- iframeContainer.style.top = initialTop + deltaY + 'px'; // Update top position when resizing
- }
- }
- }
- // Mouseup event to stop resizing
- function onMouseUp() {
- isResizing = false;
- document.removeEventListener('mousemove', onMouseMove);
- document.removeEventListener('mouseup', onMouseUp);
- }
- document.addEventListener('mousemove', onMouseMove);
- document.addEventListener('mouseup', onMouseUp);
- });
- }
- // Attach resize functionality to the top-left and top-right corners
- resizeContainer(topLeftResizer, 'top-left');
- resizeContainer(topRightResizer, 'top-right');
- })();