support customize js callback