Disable web developer tools from the f12 button, right-click and browser menu
MIT License
English | | | Gitee | QQ: 720626970
npm i disable-devtool
import DisableDevtool from 'disable-devtool';
DisableDevtool();
<script disable-devtool-auto src='https://cdn.jsdelivr.net/npm/disable-devtool'></script>
:
<!---->
<script disable-devtool-auto src='https://cdn.jsdelivr.net/npm/[email protected]'></script>
<!---->
<script disable-devtool-auto src='https://cdn.jsdelivr.net/npm/disable-devtool@latest'></script>
issuesbug
DisableDevtool({
ondevtoolopen: (type) => {
const info = 'devtool opened!; type =' + type;
alert(info);
// console.warn(info);
},
})
<script src='https://cdn.jsdelivr.net/npm/disable-devtool'></script>
<script>
DisableDevtool({
ondevtoolopen: (type) => {
const info = 'devtool opened!; type =' + type;
alert(info); // console.warn(info);
},
})
</script>
devtool
console.log(DisableDevtool.isRunning);
true
issue
disable-devtool
:
script
disable-devtool
npm i disable-devtool
import DisableDevtool from 'disable-devtool';
DisableDevtool(options);
DisableDevtool
interface IDDResult {
success: boolean; //
reason: string; //
}
options
interface IConfig {
md5?: string; // md53.2
url?: string; // localhost
tkName?: string; // url ddtk
ondevtoolopen?(type: DetectorType, next: Function): void; // urltype 3.5 next
ondevtoolclose?(): void; //
interval?: number; // 200ms
disableMenu?: boolean; // true
stopIntervalTime?: number; //
clearIntervalWhenDevOpenTrigger?: boolean; // false ondevtoolclose
detectors?: Array<DetectorType>; // 3.5
clearLog?: boolean; // log
disableSelect?: boolean; // false
disableCopy?: boolean; // false
disableCut?: boolean; // false
disablePaste: boolean; // false
ignore?: (string|RegExp)[] | null | (()=>boolean); //
disableIframeParents?: boolean; // iframe
timeOutUrl?: string; // url;
rewriteHTML: string; //
}
enum DetectorType {
Unknown = -1,
RegToString = 0, //
DefineId, // dom id
Size, //
DateToString, // Date.toString
FuncToString, // Function.toString
Debugger, // ios chrome
Performance, // log
DebugLib, // eruda vconsole
};
key md5
key a md5 bb md5 url url ddtk=a
disableDevtool md5
DisableDevtool.md5('xxx');
<script
disable-devtool-auto
src='https://cdn.jsdelivr.net/npm/disable-devtool'
md5='xxx'
url='xxx'
tk-name='xxx'
interval='xxx'
disable-menu='xxx'
detectors='xxx'
clear-log='true'
disable-select='true'
disable-copy='true'
disable-cut='true'
disable-paste='true'
></script>
disable-devtool-auto
<script src='https://cdn.jsdelivr.net/npm/disable-devtool'></script>
<script>
DisableDevtool({
// 3.1
})
</script>
Disable-Devtool , DisableDevtool.DetectorType
enum DetectorType {
Unknown = -1,
RegToString = 0, //
DefineId, // dom id
Size, // // 0.3.5
DateToString, // Date.toString
FuncToString, // Function.toString
Debugger, // ios chrome
Performance, // log
DebugLib, //
};
ondevtoolopen
ondevtoolopen
DisableDevtool({
ondevtoolopen(type, next){
alert('Devtool opened with type:' + type);
next();
}
});
DisableDevtool ()
DisableDevtool.isRunning;
DisableDevtool ()
DisableDevtool.isSuspend = true;
DisableDevtool.isSuspend = false;
ignore
DisableDevtool({
ignore: [
'/user/login', //
/\/user\/[0-9]{6}/, //
]
});
bool
DisableDevtool({
ignore: () => {
return userType === 'admin'; //
}
});
DisableDevtool
DisableDevtool.version;