In ScriptController and ScriptElement, there are some `Ref<Frame> protector(frame)` protections.
It avoids destroying Frame during executing scripts.
But if there are no code touching Frame after the execution of the script, we do not need to save Frame.
Not in ScriptElement.
Be careful if changing this: the ScriptController is actually owned by its Frame, so removing protectors could cause the ScriptController itself to be destroyed.