#javascript
Вопрос:
Итак, я пытался создать меню модов, чтобы взломать iReady в качестве букмарклета, я новичок в HTML, поэтому я начал с того, что сделал одну кнопку. Он отображается на главных страницах, но на уроках кнопка исчезает. Когда я выхожу из урока, кнопка отображается снова. Мой код:
let c = document.createElement('div');
c.innerHTML = `<button onclick="test()">test</button>`;
document.body.appendChild(c);
да, я только что сделал кнопку, я пытаюсь заставить кнопку появиться первой.
Комментарии:
1. Я понятия не имею, как я уже работаю как веб-сайт, но похоже, что урок либо перекрывает главную страницу, либо заменяет ее. Если он накладывается на него, добавьте CSS
div
, чтобы установить его наposition: absolute; z-index: 100000;
или что-то столь же высокое, и посмотрите, сработает ли это. Если вам нужна дополнительная помощь, вам нужно будет предоставить примеры HTML и CSS страницы iReady при отображении урока.2. @HereticMonkey да, спасибо, это сработало 😀
Ответ №1:
Может быть, вам нужно поместить код либо в функцию onload, либо в теги скрипта в конце текста, чтобы запустить его после загрузки страницы?
В голове:
<head>
<script>
window.onload = function () {
let div = document.body.appendChild(document.createElement('div'));
let button = document.createElement('button');
button.setAttribute('onclick', 'test()')
button.innerHTML = 'test';
div.append(button);
}
</script>
</head>
Или в теле:
<body>
<!-- some other html -->
<script>
let div = document.body.appendChild(document.createElement('div'));
let button = document.createElement('button');
button.setAttribute('onclick', 'test()')
button.innerHTML = 'test';
div.append(button);
</script>
</body>
Ответ №2:
я нашел такую вещь, как меню модов, и оно делает кнопки, как вы пытаетесь сделать, и это букмарклет!
вот он:
javascript:(function(){javascript: (function main() {
/* I add random characters at the end of the ID so that it does not clash with any other ID's on the page */
const ID =
'--picture-in-picture-toolbar-8743fsfjkl9274g9832fkjdslfjksl7498247389'; /* Helper functions */
const get = (selector, el = document) => el.querySelector(selector);
const getAll = (selector, el = document) =>
Array.from(el.querySelectorAll(selector));
/* Remove our toolbar if it exists */ let _toolbar = get(`#${ID}`);
if (_toolbar) {
_toolbar.parent.removeChild(_toolbar);
}
/* create the toolbar */ const toolbar = document.createElement(
'div'
); /* Set the toolbar's ID, so we can remove it later */
toolbar.id = ID; /* Use shadow-dom as outlined here: https://developers.google.com/web/fundamentals/web-components/shadowdom */
/* Inside shadow dom we don't have to worry about conflicting styles. */ const shadowroot = toolbar.attachShadow(
{ mode: 'open' }
);
shadowroot.innerHTML = `<style>#container { z-index: 9999; border: 1px solid #000; border-radius: 3px; padding: 0.7em; position: fixed; top: 0.5em; right: 0.5em; background-color: rgba(0,0,0,0.7); font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";}button { padding: 0.5em 0.7em; border-radius: 3px; box-shadow: none; border: 2px solid #fff; background-color: transparent; color: #fff; cursor: pointer;}button:hover { background-color: white; color: black;}</style><div id="container"> <button aria-label="click to alert" id="alert"> Click to Alert </button>
<button onclick="myFunction()">Click me</button>
<button onclick="myFunction()">Click me</button>
<button onclick="myFunction()">Click me</button>
<button aria-label="close" id="close"> x </button></div> `;
get('#close', shadowroot).addEventListener('click', () => {
const toolbar = get(`#${ID}`);
if (toolbar) {
toolbar.parentNode.removeChild(toolbar);
}
});
const alertEl = get('#alert', shadowroot);
alertEl.addEventListener('click', e => {
alert('You clicked to alert');
});
document.body.appendChild(toolbar);
})();})();