Remove JavaScript Element when not needed
This commit is contained in:
parent
ce892a31bf
commit
18b50be203
@ -287,11 +287,11 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
|
|||||||
mDoricJSE.loadJS(String.format(DoricConstant.TEMPLATE_CONTEXT_DESTROY, contextId), "_Context://" + contextId);
|
mDoricJSE.loadJS(String.format(DoricConstant.TEMPLATE_CONTEXT_DESTROY, contextId), "_Context://" + contextId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String packageContextScript(String contextId, String content) {
|
protected String packageContextScript(String contextId, String content) {
|
||||||
return String.format(DoricConstant.TEMPLATE_CONTEXT_CREATE, content, contextId, contextId);
|
return String.format(DoricConstant.TEMPLATE_CONTEXT_CREATE, content, contextId, contextId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String packageModuleScript(String moduleName, String content) {
|
protected String packageModuleScript(String moduleName, String content) {
|
||||||
return String.format(DoricConstant.TEMPLATE_MODULE, moduleName, content);
|
return String.format(DoricConstant.TEMPLATE_MODULE, moduleName, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
package pub.doric.engine;
|
package pub.doric.engine;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import pub.doric.Doric;
|
import pub.doric.Doric;
|
||||||
|
import pub.doric.utils.DoricConstant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: This uses DoricWebShellJSExecutor directly
|
* @Description: This uses DoricWebShellJSExecutor directly
|
||||||
@ -23,8 +27,24 @@ import pub.doric.Doric;
|
|||||||
* @CreateDate: 2021/11/9
|
* @CreateDate: 2021/11/9
|
||||||
*/
|
*/
|
||||||
public class DoricWebShellJSEngine extends DoricJSEngine {
|
public class DoricWebShellJSEngine extends DoricJSEngine {
|
||||||
|
private final Map<String, String> scriptIdMap = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initJSEngine() {
|
protected void initJSEngine() {
|
||||||
mDoricJSE = new DoricWebShellJSExecutor(Doric.application());
|
mDoricJSE = new DoricWebShellJSExecutor(Doric.application());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void prepareContext(String contextId, String script, String source) {
|
||||||
|
String scriptId = mDoricJSE.loadJS(packageContextScript(contextId, script), "Context://" + source);
|
||||||
|
scriptIdMap.put(contextId, scriptId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroyContext(String contextId) {
|
||||||
|
String scriptId = mDoricJSE.loadJS(String.format(DoricConstant.TEMPLATE_CONTEXT_DESTROY, contextId), "_Context://" + contextId);
|
||||||
|
((DoricWebShellJSExecutor) mDoricJSE).removeScript(scriptId);
|
||||||
|
scriptId = scriptIdMap.get(contextId);
|
||||||
|
((DoricWebShellJSExecutor) mDoricJSE).removeScript(scriptId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -324,13 +324,17 @@ public class DoricWebShellJSExecutor implements IDoricJSE {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeScript(String scriptId) {
|
||||||
|
execJS(String.format("javascript:removeScriptElement('%s')", scriptId));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String loadJS(final String script, String source) {
|
public String loadJS(final String script, String source) {
|
||||||
String uniqueId = String.valueOf(scriptId.incrementAndGet());
|
String uniqueId = String.valueOf(scriptId.incrementAndGet());
|
||||||
String url = shellUrl + "script/" + uniqueId;
|
String url = shellUrl + "script/" + uniqueId;
|
||||||
loadingScripts.put(url, script);
|
loadingScripts.put(url, script);
|
||||||
execJS(String.format("javascript:addScriptElement('%s','%s')", uniqueId, url));
|
execJS(String.format("javascript:addScriptElement('%s','%s')", uniqueId, url));
|
||||||
return null;
|
return uniqueId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user